Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 파일 및 디렉토리 비교

<시간/>

파이썬의 표준 라이브러리에는 파일과 디렉토리 비교를 위한 함수를 정의하는 filecmp 모듈이 있습니다. 이 비교는 파일의 데이터와 함께 파일의 속성을 고려합니다.

이 문서의 예제 코드는 다음 파일 및 디렉터리 구조를 사용합니다.

현재 작업 디렉토리 아래에 두 개의 디렉토리 dir1 및 dir2가 먼저 생성됩니다. 다음 파일이 포함되어 있습니다.

--dir1/newfile.txt--이것은 dir1에 있는 파일입니다--dir1/file1.txt--Hello Python--dir1/file2.txt--Python Standard Library--dir2/file1.txt-- 안녕하세요 Python--dir2/file2.txt--Python 라이브러리

이제 filecmp 모듈의 다양한 비교 기능을 설명하겠습니다.

filecmp.cmp(f1, f2, 얕은=True)

이 함수는 두 파일을 비교하여 동일하면 True, 그렇지 않으면 False를 반환합니다. 얕은 매개변수는 기본적으로 True입니다. 따라서 파일 메타데이터는 콘텐츠와 함께 비교를 위해 고려됩니다. Shallow가 False로 설정되어 있으면 내용만 비교됩니다.

파일 구조에 따라 다음 코드는 다음과 같은 출력을 생성합니다. -

다른 파일:['file2.txt']>>> filecmp.cmp('dir1/file1.txt', 'dir2/file1.txt')True>>> filecmp.cmp('dir1/file1.txt ', 'dir2/file1.txt', 얕음 =False)True>>> filecmp.cmp('dir1/file2.txt', 'dir2/file2.txt')False

filecmp.cmpfiles(dir1, dir2, 얕음)

이 함수는 두 디렉토리에 있는 파일을 비교하고 세 항목 튜플을 반환합니다. 튜플의 첫 번째 항목은 일치하는 파일 목록, 두 번째 항목은 일치하지 않는 파일 목록, 세 번째 항목은 공통 파일 목록입니다.

>>> 일치, 불일치, 오류 =filecmp.cmpfiles('dir1','dir2',['file1.txt', 'file2.txt'])>>> 일치['file1.txt']>>> 불일치['file2.txt']>>> 오류[]

filecmp 모듈은 dircmp 클래스도 정의합니다. 그 개체는 디렉터리 비교 개체입니다. 왼쪽 및 오른쪽 디렉터리로 식별되는 두 디렉터리의 파일을 비교합니다. 개체는 아래에 설명된 대로 다양한 방법을 실행할 수 있습니다. -

파일cmp.dircmp(a,b)

이것은 생성자입니다. 및 b는 비교할 디렉토리입니다. 기본적으로 디렉토리의 시스템 파일은 숨겨져 있고 비교 시 무시됩니다.

>>> 결과 =filecmp.dircmp('dir1', 'dir2')

dircmp 클래스의 다른 메소드는 다음과 같습니다 -

보고서()

이 메소드는 디렉토리 간의 비교 결과를 출력합니다.

>>> result =filecmp.dircmp('dir1', 'dir2')>>> result.report()diff dir1 dir2dir1에만 있음:['newfile.txt']동일한 파일:['file1.txt' ]다른 파일:['file2.txt']

왼쪽, 오른쪽

이 속성은 dircmp 생성자의 첫 번째 및 두 번째 디렉토리 이름을 인쇄합니다.

>>> result.left'dir1'>>> result.right'dir2'

left_list, right_list

이 속성은 두 디렉토리에 있는 파일 목록을 반환합니다.

>>> result.left_list['file1.txt', 'file2.txt', 'newfile.txt']>>> result.right_list['file1.txt', 'file2.txt']

공통, common_files, common_dirs

이러한 속성은 공통 파일 및 디렉터리, 공통 파일만 및 공통 디렉터리만 반환합니다.

>>> result.common['file1.txt', 'file2.txt']>>> result.common_files['file1.txt', 'file2.txt']>>> result.common_dirs[] 

same_file, diff_files

속성은 dircmp 클래스에 정의된 비교 연산자를 사용하여 동일한 파일과 다른 파일의 목록을 반환합니다.

>>> result.same_files['file1.txt']>>> result.diff_files['file2.txt']

이 기사는 dircmp 클래스, 그 메소드 및 filecmp 모듈에 정의된 파일 비교 기능에 대해 설명합니다.