상황: 총 파일 및 디렉터리 수를 재귀적으로 개별적으로 계산하는 Python 스크립트가 있습니다. 코드는 다음과 같습니다.
def traverse(top):
filecount = 0
dircount = 0
for root, dirs, files in os.walk(top):
for f in files:
if dirs: dircount += 1
elif files: filecount += 1
else:
print("Error")
break
print("Num of dir: " + dircount)
print("Num of files: " + filecount)
문제: 코드를 실행할 때마다 거의 매번 디렉터리와 파일 수가 달라집니다.
질문: 파일 및 디렉터리 수가 변동하는 이유를 제안해 주시겠습니까? 아마도 이것이 Linux가 작동하는 방식일까요?
추가 정보: 내 스크립트의 이 부분이 전체 프로그램에 매우 중요한지 확인하고 싶습니다.
답변1
실행 중인 Unix 시스템은 정상 작동 중에 정기적으로 임시 파일과 디렉터리를 생성합니다.
단순히 편집기에서 파일을 열거나 이메일을 보내는 것만으로도 임시 파일이 한두 개 생성될 수 있고, 웹을 탐색하는 것만으로도 짧은 시간에 수백 개의 파일이 생성되고 삭제될 수 있습니다. 또한 그래픽 데스크탑 환경에서는 일반적으로 알 수 없는 캐싱 및 기타 작업을 수행하여 임시 파일을 생성하고 삭제할 수 있습니다.
최상위 디렉터리가 무엇인지에 따라 홈 디렉터리는 물론 /tmp
그 아래의 모든 디렉터리 와 같이 자주 변경되는 디렉터리를 덮어쓰게 될 가능성이 높습니다./var
답변2
dirs는 현재(루트) 디렉터리의 디렉터리 이름 목록이고, files는 현재 디렉터리의 파일 이름 목록입니다.
내 생각에 당신은 다음과 같은 것을 더 원한다고 생각합니다.
def traverse(top):
filecount = 0
dircount = 0
for root, dirs, files in os.walk(top):
dircount += len(dirs)
filecount += len(files)
print("Num of dir: " + dircount)
print("Num of files: " + filecount)