我正在遍歷目錄中的檔案并將它們的名稱更改為 1、2、3 等。當我運行它時,它作業正常。但是如果我再次運行它,它最終會洗掉很多檔案。想不通為什么。
import os
pth = "path here"
lst = os.listdir(pth)
counter = 1
for fle in lst:
new_pth = pth "/" fle
final_pth = pth "/" str(counter) ".svg"
os.rename(new_pth, final_pth)
counter = 1
uj5u.com熱心網友回復:
讓我們以您有 13 個檔案的情況為例。腳本第一次運行時,它會遍歷檔案并將它們從 1-13 重命名。第二次,它從檔案 1 開始,將其重命名為檔案 1(什么都不做),但之后回圈沒有轉到檔案 2,而是選擇檔案 10。然后檔案 10 被重命名為檔案 2。第三次回圈運行,它不會拾取檔案 3,而是檔案 11,它被重命名為檔案 3。在回圈拾取檔案 2 之前,它首先將檔案從 10 - 13 重命名。
但是現在,檔案2實際上是檔案10,原來的檔案2已經被洗掉了。檔案 3 是檔案 11,原來的檔案 3 不見了。這就是你面臨這個問題的原因。如果您只有 9 個檔案,您會注意到問題不會發生。
要解決這個問題:
將for fle in lst:回圈替換為:
for fle in sorted(lst, key=lambda x:int(x.replace('.svg', ''))):
這將洗掉.svg,將數字視為整數,并按數字順序對它們進行排序。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/519817.html
下一篇:確定字母串列中的字母是否為大寫
