Appia의 IT세상

파이썬[Python] 파일(file) / 디렉토리(directory) 비교 하기(filecmp) 본문

Python/Python 응용

파이썬[Python] 파일(file) / 디렉토리(directory) 비교 하기(filecmp)

Appia 2020. 8. 12. 07:54
반응형

파이썬[Python] 파일(file) / 디렉토리(directory) 비교 하기(filecmp)

 

이번 포스팅에서는 파이썬을 이용해서 파일을 비교하는 부분에 대해서 이야기를 해보고자 합니다. 실제 많은 사람들은 파일 관리 및 중복된 파일에 대해서 특별히 관리 하지 않는 경우가 있습니다. 이럴 경우에 파일의 중첩여부에 따라서, 상당히 많은 저장 공간을 사용하기도 합니다. 따라서, 이번 포스팅에서는 파이썬(Python)을 이용해서, 파일과 폴더를 비교하는 방법에 대해서 이야기를 해보고자 합니다. 

 

<파일 비교>

먼저, 파이썬[Python]에서는 파일 비교에 관련된 기본 모듈을 제공하고 있습니다. 일단 다음과 간단히2개의 텍스트 파일을 비교해보도록 하겠습니다. 

Text1.txt Text2.txt
Hello, 
Appia _ Story
Hello, 
Appia _ Story
Hello, 
Appia _ Story

위와 같은 파일을 만들어서 비교해보도록 하겠습니다. 

import filecmp
 
print(filecmp.cmp('Text1.txt''Text2.txt'))
cs

이의 파일을 실행하니, 다음과 같은 결과가 나왔습니다. 

False
cs

물론, 파일 이름에 대해서 비교하는지에 대해서 궁금해 하시는 분들도 있습니다. 이 경우에는 os.stat()의 결과를 파일을 비교하게 됩니다. 따라서, 단순히 이름만 바뀐다고 내용이 다르다고 판단하지 않습니다. 

 

<디렉토리 비교>

이번에는 디렉토리에 대해 비교하는 방법에 대해서 살펴보겠습니다. 앞서 파일 비교에는 함수를 제공했다면, directory비교에는 클래스를 제공합니다. 먼저 간단히 코드를 한번 실행해보겠습니다. 

 

import filecmp
 
print(filecmp.dircmp('QT''QT1'))
 
rep = filecmp.dircmp('QT''QT1')
 
print("Onlt QT have : ")
 
print(rep.left_only)
 
print("Onlt QT1 have : ")
 
print(rep.right_only)
cs

 

일단, 디렉토리 비교를 위해서는 filecmp에 있는 dircmp라는 클래스를 토대로 작업이 진행됩니다. 먼저 위의 실행 결과를 보겠습니다. 

 

<filecmp.dircmp object at 0x02AC04F0>
Onlt QT have : 
[]
Onlt QT1 have : 
['20200425_list_duplicate_remove.py']
 
Process finished with exit code 0
 
cs

 

위에서 보다시피, 클래스 안의 메소드를 통해서 원하시는 결과를 도출하셔야 합니다. 따라서, 관련된 메소드에 대해서 한번 살펴보겠습니다. 

left 인자값으로 왼쪽에 입력된 왼쪽 디렉토리
right 인자값으로 오른쪽에 입력된 오른쪽 드렉토리
left_list 인자값으로 왼쪽에 입력된 디렉토리의 파일과 sub-디렉토리
right_list 인자값으로 오른쪽에 입력된 디렉토리의 파일과 sub-디렉토리
common 왼쪽, 오른쪽 디렉토리에 공통으로 있는 파일과 sub-디렉토리
left_only 왼쪽에만 있는 파일과 sub-디렉토리
right_only 오른쪽에만 있는 파일과 sub-디렉토리
common_dirs 왼쪽/ 오른쪽 디렉토리의 공통 하위 디렉토리 
common_files 왼쪽/ 오른쪽 디렉토리의 공통 파일
same_files 왼쪽/ 오른쪽에 모두 있으나, cmp연사자 사용시 같은 파일
diff_files 왼쪽/ 오른쪽에 모두 있으나, cmp연사자 사용시 다른 파일

위의 메소드를 이용해서, 디렉토리의 비교 분석할 수 있습니다. 

 

이번 포스팅에서는 파이썬[Python] 파일(file) / 디렉토리(directory) 비교 하기(filecmp)라는 주제로 간단히 파일 / 디렉토리를 비교하는 방법에 대해서 살펴봤습니다. 궁금하신 점이나 문의 사항 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다. 

반응형
Comments