读取文件夹中的文件

时间:2017-04-09 16:47:26

标签: python file

我有一个包含特定扩展名的文件的文件夹,例如:'LRZ_OA_12115.txt'。我有数百个带有这些名字的文件。以下是任务: i)我希望以数字顺序访问每个文件。例如,我想在LRZ_OA_12116之前拥有LRZ_OA_12115。 ii)我想访问并阅读此部分:文件夹中每个文件的12115(不是字母)。

我将不胜感激。

感谢。

3 个答案:

答案 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)

您可以使用Python标准库中的osos.path函数。

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):
    ...