다음 코드를 가져 와서 변경 내용을보고 파일 크기가 최근에 증가하지 않았 음을 확인하면 파일 이름 (선호하는 전체 경로)을 문자열로 반환하려고합니다. 불완전한 파일을 검사하는 나머지 스크립트를 중지합니다. 탐지 된 파일을 목록으로 수집하기 때문에 파일 크기 타이머 기능을 보내는 데 문제가 있습니다. 내가 틀린 나무를 짖는다면 자유롭게 말해라. 그러면 어떤 도움을 주셔서 감사합니다!파이썬 조사 폴더 - 파일 크기에 대한 질문 목록
스튜어트
import os, time
def watch(path_to_watch):
before = dict ([(f, None) for f in os.listdir (path_to_watch)])
while watch_active == 1:
time.sleep (10)
after = dict ([(f, None) for f in os.listdir (path_to_watch)])
added = [f for f in after if not f in before]
removed = [f for f in before if not f in after]
if added:
filesizechecker(added)
return added
if removed:
print "Removed: ", ", ".join (removed)
before = after
def filesizechecker(filepath):
# Checks filesize of input file and
# returns 1 when file hasn't changed for 3 seconds
fnow = open(filepath, "rb")
fthen = 1
while fnow != fthen:
time.sleep(3)
fthen = len(f.read())
watch_active = 1
watch("/home/stewart/Documents")
파일이 "진행 중"이 아닌지 테스트하는 가장 좋은 방법입니까? 예를 들어, 임시 디렉토리에 불완전한 파일을 처리 한 다음 주 디렉토리에'os.rename' (이것은 원자 적입니다)을 처리 할 수 있습니다. – katrielalex
아,'dict' 대신'set'을 사용해야합니다; 하나를 위해, 그것은 옳은 일을하는 방법입니다 -하지만 그뿐만 아니라, 당신은 할 수있는'추가 = 후 - 전에! 예 : 'before = set (os.listdir (...))'. – katrielalex