2017-08-29 84 views
-2

我正在尋找一個python腳本,該腳本可以在當前目錄中找到此python腳本將從中運行的現有文件的確切文件名,該腳本可能會以增量方式命名。從python中的部分文件名中查找文件

例如該文件可能是: file1.dat file2.dat file3.dat ....

因此,我們知道的是,文件名的前綴file開始,我們知道,它與sufix .dat結束。

但我們不知道它是否會是file1.datfile1000.dat或其他任何東西。

所以我需要一個腳本來檢查範圍1-1000所有文件名從file1.datfile1000.dat,如果它發現目錄中存在的文件名,它會返回一個成功消息。

+0

也許看看模塊'glob' – PRMoureu

+0

看看這裏:https://stackoverflow.com/questions/3964681/find-all-files-in-a-directory-with-extension-txt-in -python – Dadep

+0

[在Python中查找擴展名爲.txt的目錄中的所有文件]的可能重複(https://stackoverflow.com/questions/3964681/find-all-files-in-a-directory-with-extension-txt -in-python) – Dadep

回答

1

試試這個:

for i in range(1, 1001): 
    if os.path.isfile("file{0}.dat".format(i)): 
     print("Success!") 
     break 
else: 
    print("Failure!") 
0

嘗試是這樣的:

import os 

path = os.path.dirname(os.path.realpath(__file__)) 

for f_name in os.listdir(path): 
    if f_name.startswith('file') and f_name.endswith('.dat'): 
     print('found a match') 
+0

這有可能將文件與'file-sample.dat'或'file.dat'這樣的名稱進行匹配。 –

+0

@ZachGates是的,它的確如此。這只是一個起點。我100%確定他的命名規則是/將會是什麼。 – LeopoldVonBuschLight

0

正如其他的評論,水珠等可供選擇,但建議我個人認爲listdir同時更舒適。

import os 
for file in os.listdir("/DIRECTORY"): 
    if file.endswith(".dat") and prefix in file: 
     print file 
+0

什麼是'prefix'?我懷疑它是''file'',如果是這樣的話,你可能會得到匹配的文件,比如'file-sample.dat'等等。使用'in'運算符,你甚至可以匹配像'sample-file .dat「或」ignore-this-file.dat「。 –

1

我會用Python的glob模塊用正則表達式搜索。下面是一個示例表達式:

glob.glob(r'^file(\d+)\.dat$') 

這將匹配開始file一個文件名,其次是任何數字,並與.dat結束。有關這個正則表達式如何工作的更深入的解釋,請查看Regex101,您也可以在其中進行測試。

注意:您的問題沒有指定,但作爲獎勵,glob也支持遞歸搜索。

相關問題