Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解决方案允许Python脚本打开目录中的任何文件,而不是硬编码的名称_Python_Wxpython - Fatal编程技术网

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

解决方案允许Python脚本打开目录中的任何文件,而不是硬编码的名称,python,wxpython,Python,Wxpython,我有一个Python脚本,它打开一个文件并处理内容,最终创建一个单独的输出文件,我需要提供给其他人。问题是这个脚本需要每天运行,而我用脚本打开的文件每天都不会有相同的文件名。所以我知道我不能将文件名硬编码到脚本的csv.reader(open(…)部分 虽然我总是可以重命名接收到的文件以匹配硬编码到脚本中的文件名,但这并不理想,因为我每天都必须这样做,而且我会处理原始文件,这是不正常的。我希望有一个简单的解决方案来修改我的脚本,以打开任何以特定扩展名结尾的文件(即-.csv),或者可能有一个通过

我有一个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>
导入csv
bs_ref=csv.reader(打开('inputfile_14022011.csv','rb'))
我想将“inputfile_14022001.csv”替换为允许为脚本的特定部分调用任何文件名的内容。不幸的是,我找不到任何有助于创建文件浏览器界面的内容,该界面可用于将所选文件名传递到脚本的特定部分


感谢您提供的任何帮助。

既然您标记了wxpython,它可以是这样的(未测试的)片段:

import glob

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

# If you expect there to be only ONE file...
the_filename = possible_filenames[0]
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'))

您是在寻找交互式解决方案(使用GUI),还是在寻找可以在无人参与的情况下运行的解决方案(例如“选择最新的
inputfile.*.csv
file”)?问得好。可能是交互式的,以便我知道正在处理正确的文件。正在处理大量数据,因此在脚本完成后检查它不是一项容易的任务。我尝试了这个方法,看起来它工作得很好!非常感谢。感谢您的快速回复。