【问题标题】:Python: get the names of specific file types in a given folderPython:获取给定文件夹中特定文件类型的名称
【发布时间】:2016-02-16 16:10:19
【问题描述】:

我有一个文件夹,其中包含ncsv 文件,它们都被命名为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。谢谢!

【问题讨论】:

    标签: python csv path directory filenames


    【解决方案1】:

    看起来你得到了你想要的。在您的代码中查看这一行:

    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
    

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

    【讨论】:

    • 您可以在文件列表中添加排序功能,对您想要排序的部分进行排序。请注意,字符串的排序方式与数字不同(即“100”小于“3”)。
    • 我添加了一个这样的排序示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 2013-04-19
    • 2023-03-20
    相关资源
    最近更新 更多