我正在尝试读取目录中的所有文件。
for root, dirs,files in os.walk(path):
for j in files:
print(str(j))
这是我的代码,其中path
是要读取的目录的路径。但它不按名称的顺序打印文件。在我的情况下,我有0.txt
,1.txt
,......到3590.txt
的文件。我希望它以相同的顺序打印文件。而是从579.txt
开始。我怎样才能解决这个问题?我想以相同的顺序对文件进行一些计算,因此只需将名称存储在列表中并对其进行排序就无济于事。
答案 0 :(得分:4)
如何使用lambda对它们进行排序以在文件名中使用int:
for root, dirs,files in os.walk(path):
for j in sorted(files, key=lambda key: int(key.replace(".txt", ""))):
print(str(j))
答案 1 :(得分:0)
由于文件名结构与/// <returns>false if the file does not exists, true otherwise.</returns>
public static bool TryOpenFileStreamIfExists(string filePath, FileAccess fileAccess, FileShare fileShare, out FileStream fs, FileOptions fileOptions = FileOptions.None) {
try {
if (!File.Exists(filePath)) {
fs = null;
return false;
}
fs = new FileStream(filePath, FileMode.Open, fileAccess, fileShare, short.MaxValue, fileOptions);
return true;
}
catch (FileNotFoundException) {
fs = null;
return false;
}
}
类似,因此我们可以按数字排序。
<强>演示强>:
$Number$.txt