2015-02-24 33 views
0

假設我有10個名爲「1」,「2」,...,「10」的文件。 今天我處於一種情況,我想在腳本中一次加載這10個文件。 我使用的代碼,這是在寫十次連續與mathemical操作我想包含在這些文件中的數據使用之間:如何從python中自動導入文件名

Tk().withdraw() 
    filename2 = askopenfilename() 
    with load(filename2) as data: 

    ..."mathematical operations"... 

    Tk().withdraw() 
    filename3 = askopenfilename() 
    with load(filename3) as data: 

等等,等等......

這種方式打開10個對話框,一個接一個,我需要輸入文件的名稱來加載它(所以我輸入「1」,敲回車,然後在下一個框中輸入「2」,敲回車,blablabla) 。

我正在尋找一種方法來打開一個對話框(或者您可能知道一些更聰明的事情),然後在一行中鍵入一個正確的數字順序,以便腳本將它們加載一個獨自一人。換句話說,在很短的時間內,我將有300個文件,我只想輸入一次:1,2,3,4,5,...,300,然後按回車,而不是做什麼我前面介紹過。 或者也許只是輸入「300」,腳本知道他必須查找以「1」開始的文件,然後逐個遞增。

回答

0

open函數只需要一個字符串,並且您可以任何想要的方式創建該字符串。你可以用一個變化的數字拼接你的文件名的靜態部分在for循環中:

s_pre = 'file' 
s_ext = '.txt' 

numFiles = int(raw_input("number of files: ")) 

for i in range(1, numFiles + 1): 
    filename = s_pre + str(i) + s_ext 
    with open(filename) as data: 
     ## input stuff 

    ## math stuff 

我認爲load是你的功能,你可以在迴路中通過這個文件名load爲好。

+0

謝謝你的幫助,這是一個非常有趣的評論。 我想我明白你的意思了,你很可能解決了我的問題。 謝謝! – Magea 2015-02-24 14:08:39