允许Python脚本打开目录中任意文件的解决方案,而不是硬编码名称
我有一个Python脚本,它会打开一个文件并处理里面的内容,最后生成一个单独的输出文件,我需要把这个文件提供给其他人。不过,问题是这个脚本每天都需要运行,而我打开的文件每天的文件名都不一样。所以我知道不能把文件名直接写死在脚本里的csv.reader(open(...)那部分。
虽然我可以每天把收到的文件重命名成脚本里写死的文件名,但这样并不理想,因为我每天都得这么做,而且还会修改原始文件,这样是不太合适的。我希望能找到一个简单的方法,修改我的脚本,让它可以打开任何以特定后缀(比如.csv)结尾的文件,或者也许可以通过tkinter或wxpython创建一个简单的文件浏览界面,让我可以选择文件,并把选中的文件名传递给脚本中打开文件的那部分。
这是我需要修复的脚本的一部分:
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 个回答
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如说,有人可能在使用一个叫做“库”的东西时,发现它的某些功能没有按照预期工作。这时候,大家通常会去一个叫做StackOverflow的网站上寻求帮助。
在这个网站上,很多人会分享他们遇到的问题和解决方案。比如,有人可能会问:“我在使用这个库的时候,为什么会出现错误?”然后,其他人就会根据自己的经验来回答,给出一些建议或者解决办法。
总之,StackOverflow是一个很好的地方,可以让你找到别人遇到的类似问题和解决方案,帮助你更好地理解编程中的各种工具和技术。
import glob
possible_filenames = glob.glob("*.csv")
# If you expect there to be only ONE file...
the_filename = possible_filenames[0]
因为你提到了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'))