Python:获取给定文件夹中特定文件类型的名称

时间:2015-11-15 13:57:05

标签: python csv path directory filenames

我有一个包含n csv个文件的文件夹,它们都被命名为event_1.csvevent_2.csv,一直到event_n.csv

我希望能够raw_input他们的文件夹路径,然后检索他们的名字,文件扩展名已排除

我尝试这样做,但我只打印了文件夹路径,因为其中有csv个文件。相反,文件名从不打印,而且它们就是我想要的。

这是迄今为止我提出的最好的,但它做错了:

import os
directoryPath=raw_input('Directory for csv files: ')
for i,file in enumerate(os.listdir(directoryPath)):
    if file.endswith(".csv"):
        print os.path.basename(directoryPath)

其中directoryPath=C:\Users\MyName\Desktop\myfolder,其中有三个文件:event_1.csvevent_2.csvevent_3.csv

我得到的是:

myfolder
myfolder
myfolder

我想要的是:

event_1
event_2
event_3

PS:我希望有多达100个文件。因此,我应该能够包含这样的情况,其中文件名更长:

event_10
event_100

修改

我可以添加什么来确保文件的读取顺序与它们的命名顺序相同?这意味着:首先阅读event_1.csv,然后阅读event_2.csv,依此类推,直到我达到event_100.csv。谢谢!

1 个答案:

答案 0 :(得分:2)

好像你得到了你要求的东西。请在代码中查看此行:

print os.path.basename(directoryPath)

打印directoryPath

我认为应该是:

import os
directoryPath=raw_input('Directory for csv files: ')
for i,file in enumerate(os.listdir(directoryPath)):
    if file.endswith(".csv"):
        print os.path.basename(file)
祝你好运!

修改

让我们创建一个没有路径和扩展名的所有文件名列表(l)。现在:

for n in sorted(l, key=lambda x: int(x.split('_')[1])):
    print n

现在您需要编写特定的解决方案:)