
情況:我有一個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)