본문 바로가기
PC/Programming

Anno1800 Autosave file이 너무 많다.

by dragom 2022. 5. 12.
반응형

어느새 세이브 파일이 수천개며 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

반응형

댓글