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

问题描述 投票:0回答:2

我有一个文件夹,其中包含

n
csv
文件,它们都被命名为
event_1.csv
event_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.csv
event_2.csv
event_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
。谢谢!

python csv path directory filenames
2个回答
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

现在你需要写下你的具体解决方案:)


0
投票

关于读取和处理文件路径和名称,还可以使用Python 3.4中引入的

pathlib
module

from pathlib import Path

path_dir = Path('path/to/directory/with/files')
for f in path_dir.iterdir():
    if f.suffix == '.csv':
        print(f.stem)

请注意,如果您的文件有多个后缀,

stem
仅删除最后一个后缀。您可以使用
suffixes

进行检查
© www.soinside.com 2019 - 2024. All rights reserved.