Python으로 컴퓨터 내 중복 파일을 자동으로 정리합니다. 10줄 코드(자동 스크립트)만 있으면 됩니다.

폴더를 지정하고 Python을 사용하여 지정된 폴더 아래에 파일 중복이 있는지 확인하고 중복이 있으면 삭제합니다.
주요 지식은 다음과 같습니다.
  • os모듈 종합 응용
  • glob 모듈 종합 응용
  • filecmp 모듈을 이용하여 두 파일을 비교한다
  • 단계 분석


    이 프로그램은 다음과 같은 논리를 구현할 수 있습니다.
    주어진 폴더 아래에 있는 모든 파일을 훑어보고 중첩 순환을 통해 두 개의 파일이 같은지 비교하고 같은 경우 후자를 삭제합니다.
    문제를 실현하는 관건은 바로

    어떻게 두 서류가 같을지 판단합니까?


    여기서 우리는 filecmp 모듈을 사용하여 공식적인 소개 문서를 볼 수 있다.
  • filecmp.cmp(f1, f2, shallow=True)
  • f1과 f2이라는 파일을 비교합니다. 같은 것 같으면 True로 돌아가고, 그렇지 않으면 False로 돌아갑니다
  • 만약shallow가 사실이라면 같은 os를 가진다.stat () 서명된 파일은 동일하게 여겨질 것입니다.그렇지 않으면 파일의 컨텐트가 비교됩니다
  • 그래서 이렇게 사용할 수 있어요.
    
    #  x y 
    print(filecmp.cmp(x, y))
    # True
    이 문제를 해결하면 우리는 코드를 쓰기 시작할 수 있다.

    Python 구현


    필요한 라이브러리 가져오기 및 대상 폴더 경로 설정
    
    import os
    import glob
    import filecmp
    
    dir_path = r'C:\\xxxx'
    이어서 모든 파일의 절대 경로를 훑어보면 glob 모듈의 어댑터를 이용하여 recursive 파라미터를 결합하면 완성할 수 있습니다. 프레임워크는 다음과 같습니다.
    
    for file in glob.glob(path + '/**/*', recursive=True):
      pass
    모든 파일이나 폴더를 훑어본 후에 파일인지 아닌지를 판단해야 하기 때문에, 파일이라면 절대 경로를 목록에 저장할 수 있습니다. 여기에서 두 가지 일을 더 해야 합니다.
  • 우선 빈 목록을 만들고 다음list를 사용합니다.append (i) 파일 경로를 추가합니다
  • 이어서 os를 이용한다.path.isfile (i) 은 파일인지 아닌지를 판단하고, True로 돌아가면 요소를 추가하는 작업을 수행합니다
  • 구체적인 코드는 다음과 같다.
    
    file_lst = []
    
    for i in glob.glob(dir_path + '/**/*', recursive=True):
      if os.path.isfile(i):
        file_lst.append(i)
    이전 단계에서 우리는 목표 폴더 아래의 모든 파일 경로를 얻었고, 그 다음에 이 경로 목록을 훑어볼 수 있습니다filecmp.cmp 서류 판단을 하고.os.remove 파일 삭제
    
    for x in file_lst:
      for y in file_lst:
        if x != y:
          if filecmp.cmp(x, y):
            os.remove(y)
    이곳의 코드는 이미 대체적인 논리를 실현했지만, 한 가지 세부 사항은 고려해야 한다. 파일이 이전의 판단에 의해 삭제되었기 때문에 순환될 수 있다는 것이다os.remove(file) 파일이 존재하지 않아 오류를 보고합니다.
    그래서 os를 사용할 수 있다.path.exists는 다음과 같이 파일의 존재를 판단합니다.
    
    for x in file_lst:
      for y in file_lst:
        if x != y and os.path.exists(x) and os.path.exists(y):
          if filecmp.cmp(x, y):
            os.remove(y)
    이렇게 하면 간단한 파일 리셋 프로그램이 완성되고 전체 코드는 다음과 같다.
    
    import os
    import glob
    import filecmp
    
    dir_path = r'C:\xxxx'
    
    file_lst = []
    
    for i in glob.glob(dir_path + '/**/*', recursive=True):
      if os.path.isfile(i):
        file_lst.append(i)
    
    for x in file_lst:
      for y in file_lst:
        if x != y and os.path.exists(x) and os.path.exists(y):
          if filecmp.cmp(x, y):
            os.remove(y)
    마지막에 쓰다
    본고의 Python 자동화 스크립트 제작 과정을 통해 우리는 Python 사무 자동화의 강함을 다시 한 번 느낄 수 있다
    Python으로 컴퓨터 안의 중복 파일을 자동으로 청소하는 것에 관한 이 글은 10줄 코드만 있으면 여기에 소개됩니다. 더 많은 관련python이 중복 파일을 자동으로 청소하는 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!

    좋은 웹페이지 즐겨찾기