이 질문에 상당한 시간을 보내고 비교적 직설적이어야한다고 생각하지만 계산적으로이를 수행하고 싶습니다 효율적이고 Pythonic 방식.파일 이름에 동일한 키워드가 포함되어 있고 파일 크기가 대략 동일하면
두 개의 목록을 만들었습니다. 하나는 각 파일 이름과 관련된 키워드를 포함하고 다른 하나는 가장 가까운 25 바이트로 반올림 한 해당 파일의 파일 크기를 포함하는 목록입니다. 상당히 초보적인 방법으로 중복 파일을 식별하려고 시도하고 있으며 파일 자체에 텍스트의 측면에서 약간의 차이가있을 수 있지만 일반적으로 간단한 파일 크기 비교가 트릭을 수행해야합니다.
필자의 접근 방식은 파일 이름, 키워드 및 파일 크기를 반복하고 키워드와 크기가 두 번 이상 반복되는 파일 이름을 반환하는 것입니다. 아래의 현재 구현에서는 반복되는 크기가 반드시 특정 키워드와 관련 될 필요가 없다는 점에 유의하십시오 (그러나 필자가 원하는 것은 파일 중복은 파일 크기와 키워드가 거의 동일해야 함). 나는 이것에 대해 지나치게 생각하고 있다고 생각하지만, 여기에 사전을 활용할 것인가?
일부 샘플 파일 이름은 다음과 같습니다 : 다음과 같은
import os, re
path = 'Enter path here'; os.chdir(path)
folders = os.listdir(path)
for folder in folders[:3]:
files = os.listdir(path + '\\' + folder); os.chdir(path + '\\' + folder)
names = [re.findall(r'vs (.*) on', f)[0] for f in files]
sizes = [os.stat(f).st_size for f in files]
sizes = [int(25*round(float(s)/25)) for s in sizes]
duplicates = [f for f, i, j in zip(files, names, sizes) if names.count(i)>1 and sizes.count(j)>1]
print(duplicates)
원하는 출력이 목록은 다음과 같습니다
여기United States vs Mexico on 4142017.txt w/ file size of 5282 bytes
Mexico vs Uruguay on 3272016.txt w/ file size of 5684 bytes
Spain vs France on 4222017.txt w/ file size of 4883 bytes
United States vs Mexico on 4152017.txt w/ file size of 5276 bytes
내가 (나는대로이 작동하지 않습니다 실현) 지금까지 무엇을 가지고 :
['United States vs Mexico on 4142017.txt','United States vs Mexico on 4152017.txt']
당신이 '번째 무엇을 쓸 수 단순성의 이점이 있습니다 ,'크기'는 마지막처럼 보인다? – user1767754