PC/Programming

Anno1800 Autosave file이 너무 많다.

dragom 2022. 5. 12. 20:08
반응형

어느새 세이브 파일이 수천개며 16GB를 넘기 시작했다.

과거로 돌아갈 일도 별로 없고 용량만 많이 차지하니 조금 다이어트 시켜주기로 하였다.

 

하루에 수십건 씩 파일이 생겨있길래 중복되는 짜잘한 파일들을 지우고 

그 날의 마지막 파일만 남기도록 하였다.

 

import os
import time

fdpath = ".\\"


def find_savefolder(fdpath: str) -> list:
    savefd = []
    subfds = [x[0] for x in os.walk(fdpath)]
    for fd in subfds:
        files = [x[2] for x in os.walk(fd)][0]
        if len(files) == 0:
            continue
        elif not any("Autosave" in file for file in files):
            continue
        else:
            savefd.append(fd)
    return savefd


def run_cleaner(fd: str) -> bool:
    files = [x[2] for x in os.walk(fd)][0]
    savefile = [int(x.split()[-1].split(".")[0]) for x in files if "Autosave" in x]
    del files
    savefile = sorted(savefile)
    for n, fpath in enumerate(savefile):
        if n == len(savefile) - 1:
            break
        current_file = time.strftime(
            "%Y-%m-%d",
            time.localtime(os.path.getmtime(f"{fd}\\Autosave {fpath}.a7s")),
        )
        if current_file == time.strftime(
            "%Y-%m-%d",
            time.localtime(os.path.getmtime(f"{fd}\\Autosave {savefile[n + 1]}.a7s")),
        ):
            os.remove(f"{fd}\\Autosave {fpath}.a7s")
    name = fd.split("\\")[-1]
    files = [x[2] for x in os.walk(fd)][0]
    savefile_aft = [int(x.split()[-1].split(".")[0]) for x in files if "Autosave" in x]
    print(f"{name}=>{savefile.__len__()}=>{savefile_aft.__len__()}")
    pass


def main():
    savefd = find_savefolder(fdpath)
    if len(savefd) <= 0:
        print("세이브폴더 찾기 실패")
        return False
    for fd in savefd:
        run_cleaner(fd)


if __name__ == "__main__":
    main()
    input("ANY KEY TO EXIT")

fdpath에 내문서의 Anno1800폴더 등 save 파일이 저장되는 폴더를 지정해주고 python을 돌리거나,

첨부한 실행파일을 anno폴더에서 실행시키면 Autosave ####.a7s 파일들을 찾아 정리한다.

현재 2천개, 16GB의 세이브 파일은 120개 6GB로 줄어들었다. 

autosave_cleaner.exe
6.62MB

반응형