
상황: 총 파일 및 디렉터리 수를 재귀적으로 개별적으로 계산하는 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)