我有一个包含特定扩展名的文件的文件夹,例如:'LRZ_OA_12115.txt'。我有数百个带有这些名字的文件。以下是任务: i)我希望以数字顺序访问每个文件。例如,我想在LRZ_OA_12116之前拥有LRZ_OA_12115。 ii)我想访问并阅读此部分:文件夹中每个文件的12115(不是字母)。
我将不胜感激。
感谢。
答案 0 :(得分:1)
这样做:
import os, glob
files = sorted(glob.glob(path + '*.txt'), key=os.path.basename)
从数字上来说,你可以这样做:
files = sorted(glob.glob('*.txt'), key=lambda name: int(os.path.splitext(name)[0]))
答案 1 :(得分:1)
我的建议:
import os
the_dir = "/path/to/your/files"
print(sorted(os.listdir(the_dir),key = lambda x: int(os.path.splitext(x)[0]) if os.path.splitext(x)[0].isdigit() else 0))
它根据名称部分的数值(没有扩展名)对目录列表进行排序,检查此部分是否为数字以避免在转换为整数时出现异常(其他名称 - 如果有的话 - 在开头处留下,并且没有排序)
答案 2 :(得分:0)
for filename in sorted(os.listdir('<your-directory>')):
name, _ = os.path.splitext(filename)
# do something with name
正如Jean-FrançoisFabre所说,这给出了lexicographic order(12116之前的12115,但是10之前的2),而不是严格的数字顺序。如果你需要后者,那么修改代码如下:
sort_key = lambda x: int(os.path.splitext(x)[0]) if os.path.splitext(x)[0].isdigit() else 0
for filename in sorted(os.listdir('<your-directory>'), key=sort_key):
...