我在目錄中有檔案。檔案被命名為1.txt,2.txt,...10.txt...150.txt.
當我使用 glob 函式時,它將檔案隨機排列為
1.txt,10.txt....so on
但是我希望檔案按順序排列1.txt,2.txt...10.txt,11.txt...
我試過這個功能
import glob
for filename in sorted(glob.glob('*.txt')):
print(filename)
我希望專家可以幫助我克服這個問題。
uj5u.com熱心網友回復:
默認情況下,sorted會將檔案名排序為字串。這將產生不需要的結果:
In [1]: names = [str(n) ".txt" for n in range(1,21)];
In [2]: ' '.join(sorted(names[4:14]))
Out[2]: '10.txt 11.txt 12.txt 13.txt 14.txt 5.txt 6.txt 7.txt 8.txt 9.txt'
您想按數字對檔案名進行排序。在這種情況下,可以使用key將檔案名轉換為整數的特殊函式來完成。
在上面的例子中,像這樣:
In [3]: ' '.join(sorted(names[4:14], key=lambda s: int(s[:-4])))
Out[3]: '5.txt 6.txt 7.txt 8.txt 9.txt 10.txt 11.txt 12.txt 13.txt 14.txt'
或在您的代碼中:
import glob
for filename in sorted(glob.glob('*.txt'), key=lambda s: int(s[:-4])):
print(filename)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/462124.html
上一篇:如何檢查是否選擇了RichTextBox中的某些文本
下一篇:快速合并多個大型csv檔案
