2011-02-14 17 views
2

我有一個Python腳本,它打開一個文件並處理內容,最終創建一個單獨的輸出文件,我需要提供給其他個人。問題是這個腳本需要每天運行,並且我用腳本打開的文件每天都不會有相同的文件名。所以我知道我無法將文件名硬編碼到腳本的csv.reader(open(...)部分解決方案允許Python腳本打開目錄中的任何文件,而不是硬編碼名稱

雖然我總是可以重命名我接收到的文件,以便將硬編碼的文件名匹配到腳本中,這是不理想的,因爲我必須每天都這樣做,我會操縱原始文件,這是不正確的。我希望有一個簡單的解決方案來修改我的腳本,以打開任何文件,以特定擴展名結尾(即 - .csv),或者可能有通過tkinter或wxpython的GUI解決方案,我可以使用它來創建文件界面的簡單瀏覽,以便將選定文件的名稱傳遞到打開文件的腳本部分。

下面是我需要修復的腳本示例:

import csv 

bs_ref = csv.reader(open('inputfile_14022011.csv','rb')) 

<rest of script then processes the contents of the imported file but is not relevant to the question> 

我想替換'inputfile_14022001.csv'的東西,允許任何文件名可能被調用的腳本的特定部分。不幸的是,我一直無法找到任何有用的東西來創建文件瀏覽器界面,這個界面可以用來將選定的文件名傳遞給我的腳本的特定部分。

謝謝任何​​人可以提供的幫助。

+0

您是否在尋找一個互動的解決方案(帶有GUI),或者你在找的東西,可以運行無人看管(如「選擇最新的`inputfile _ *。csv`文件」)? – 2011-02-14 21:21:49

+0

好問題。可能是互動的,以便我知道正在處理的文件。正在處理大量數據,因此在腳本完成後檢查它並不是一件容易的事。 – 2011-02-15 00:16:11

回答

1
import glob 

possible_filenames = glob.glob("*.csv") 

# If you expect there to be only ONE file... 
the_filename = possible_filenames[0] 
4

既然你標記wxPython的,它可以是這樣的(未經測試)片段:

from wxPython.wx import * 
... 
application = wxPySimpleApp() 
... 
dialog = wxFileDialog (None, style = wxOPEN) 
if dialog.ShowModal() == wxID_OK: 
    print 'Selected:', dialog.GetPath() 
    bs_ref = csv.reader(open(dialog.GetPath(),'rb')) 
相關問題