允许Python脚本打开目录中的任何文件而不是硬编码名称的解决方案

时间:2011-02-14 21:15:01

标签: python wxpython

我有一个Python脚本,它打开一个文件并处理内容,最终创建一个单独的输出文件,我需要提供给其他人。问题是这个脚本需要每天运行,我用脚本打开的文件每天都不会有相同的文件名。所以我知道我不能将文件名硬编码到脚本的csv.reader(open(...)部分。

虽然我总是可以重命名我收到的文件以匹配硬编码到脚本中的文件名,但这并不理想,因为我每天必须这样做,我会操纵原始文件,这是不行的。我希望有一个简单的解决方案来修改我的脚本,以打开任何以特定扩展名结尾的文件(即 - .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'替换为允许为脚本的特定部分调用任何文件名的内容。不幸的是,我找不到任何有用的东西来创建一个文件浏览器界面,可以用来将选定的文件名传递给我的脚本的特定部分。

感谢您提供任何帮助。

2 个答案:

答案 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'))

答案 1 :(得分:1)

import glob

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

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