2015-11-15 111 views
1

我有一個包含ncsv文件的文件夾,它們都被命名爲event_1.csvevent_2.csv,一路到event_n.csv的Python:獲取特定文件類型的名稱給定文件夾

我希望能夠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。謝謝!

回答

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

謝謝!只需檢查我的編輯! – FaCoffee

+0

您可以將文件的列表,進行排序要排序的部分上添加排序功能。請注意,字符串的排序方式與數字不同(即'100'小於'3')。 –

+0

我添加了這樣的排序的例子。 –

相關問題