我有一个文件夹,其中包含
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
。谢谢!
看起来你得到了你所要求的。在您的代码中查看这一行:
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
现在你需要写下你的具体解决方案:)
关于读取和处理文件路径和名称,还可以使用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
进行检查