filecmp — 파일과 디렉터리 비교¶
소스 코드: Lib/filecmp.py
filecmp 모듈은 다양한 선택적 시간/정확도 절충을 통해 파일과 디렉터리를 비교하는 함수를 정의합니다. 파일 비교에 대해서는, difflib 모듈을 참조하십시오.
filecmp 모듈은 다음 함수를 정의합니다:
- filecmp.cmp(f1, f2, shallow=True)¶
- f1와 f2로 이름이 지정된 파일을 비교하여, 같아 보이면 - True를 반환하고, 그렇지 않으면- False를 반환합니다.- shallow가 참이고 두 파일의 - os.stat()서명(파일 유형, 크기, 수정 시간)이 동일하면, 파일을 같다고 취급합니다.- 그렇지 않으면, 파일의 크기나 내용이 다를 때 다르다고 취급합니다. - 이 함수는 외부 프로그램을 호출하지 않으므로 이식성과 효율성을 제공합니다. - 이 함수는 과거 비교와 결과에 대해 캐시를 사용합니다. 파일에 대한 - os.stat()정보가 변경되면 캐시 항목이 무효화 됩니다. 전체 캐시는- clear_cache()를 사용하여 지울 수 있습니다.
- filecmp.cmpfiles(dir1, dir2, common, shallow=True)¶
- 두 디렉터리 dir1 과 dir2에 있는 이름이 common으로 지정된 파일들을 비교합니다. - 파일 이름의 세 가지 리스트를 반환합니다: match, mismatch, errors. match는 일치하는 파일 리스트를 포함하고, mismatch는 일치하지 않는 파일의 이름을 포함하며, errors는 비교할 수 없는 파일의 이름을 나열합니다. 파일이 디렉터리 중 하나에 없거나, 사용자가 읽을 수 있는 권한이 없거나, 다른 이유로 인해 비교를 수행할 수 없으면 파일은 errors에 나열됩니다. - shallow 매개 변수는 - filecmp.cmp()와 같은 의미와 기본값을 가집니다.- 예를 들어, - cmpfiles('a', 'b', ['c', 'd/e'])는- a/c와- b/c,- a/d/e와- b/d/e를 비교합니다.- 'c'와- 'd/e'는 각각 반환된 세 개의 리스트 중 하나에 포함됩니다.
- filecmp.clear_cache()¶
- filecmp 캐시를 지웁니다. 파일이 수정된 후 너무 빨리 비교되어 하부 파일 시스템의 mtime 해상도 내에 있을 때 유용합니다. - Added in version 3.4. 
dircmp 클래스¶
- class filecmp.dircmp(a, b, ignore=None, hide=None)¶
- a와 b 디렉터리를 비교하기 위한, 새로운 디렉터리 비교 객체를 만듭니다. ignore는 무시할 이름 리스트며, 기본값은 - filecmp.DEFAULT_IGNORES입니다. hide는 숨길 이름 리스트며 기본값은- [os.curdir, os.pardir]입니다.- The - dircmpclass compares files by doing shallow comparisons as described for- filecmp.cmp().- dircmp클래스는 다음 메서드를 제공합니다:- report()¶
- a와 b 사이의 비교를 ( - sys.stdout로) 인쇄합니다.
 - report_partial_closure()¶
- a와 b 및 공통 직접 하위 디렉터리 사이의 비교를 인쇄합니다. 
 - report_full_closure()¶
- a와 b 및 공통 하위 디렉터리 (재귀적으로) 사이의 비교를 인쇄합니다. 
 - dircmp클래스는 비교되는 디렉터리 트리에 대한 다양한 정보 비트를 얻는 데 사용될 수 있는 여러 가지 흥미로운 어트리뷰트를 제공합니다.- __getattr__()훅을 통해, 모든 어트리뷰트가 느긋하게(lazily) 계산되므로, 계산하기가 가벼운 어트리뷰트만 사용하면 속도가 저하되지 않습니다.- left¶
- 디렉터리 a. 
 - right¶
- 디렉터리 b. 
 - left_list¶
- hide 와 ignore로 필터링 된, a의 파일과 하위 디렉터리. 
 - right_list¶
- hide 와 ignore로 필터링 된, b의 파일과 하위 디렉터리. 
 - common¶
- a 와 b의 공통 파일과 하위 디렉터리. 
 - left_only¶
- a에만 있는 파일과 하위 디렉터리. 
 - right_only¶
- b에만 있는 파일과 하위 디렉터리. 
 - common_dirs¶
- a 및 b의 공통 하위 디렉터리. 
 - common_files¶
- a 와 b의 공통 파일. 
 - same_files¶
- a 와 b에 모두 있고, 클래스의 파일 비교 연산자를 사용할 때 같은 파일. 
 - diff_files¶
- a 및 b에 모두 있고, 클래스의 파일 비교 연산자를 사용할 때 내용이 다른 파일. 
 - funny_files¶
- a 및 b에 모두 있지만, 비교할 수 없는 파일. 
 - subdirs¶
- common_dirs의 이름을- dircmp인스턴스로 (또는 이 인스턴스가- dircmp의 서브 클래스인 MyDirCmp 형이면 MyDirCmp 인스턴스로) 매핑하는 딕셔너리.
 
다음은 이름이 같지만, 내용이 다른 파일을 표시하기 위해, subdirs 어트리뷰트로 두 개의 디렉터리를 재귀적으로 검색하는 간단한 예제입니다:
>>> from filecmp import dircmp
>>> def print_diff_files(dcmp):
...     for name in dcmp.diff_files:
...         print("diff_file %s found in %s and %s" % (name, dcmp.left,
...               dcmp.right))
...     for sub_dcmp in dcmp.subdirs.values():
...         print_diff_files(sub_dcmp)
...
>>> dcmp = dircmp('dir1', 'dir2')
>>> print_diff_files(dcmp)