[英]Passing an open file from one function to another
我是python初学者,所以请多多包涵。 我已经在GUI上编写了一些代码,该代码允许用户使用一个按钮(browse_inputfile)选择文件,然后显示文件路径,然后用户可以单击另一个按钮对该文件运行转换(run_conversion)。
但是,要做到这一点,我必须定义一个全局变量,以使打开的文件可以从一个函数传递到另一个函数。 有一个更好的方法吗? 我尝试传递路径并实际上在第二个函数中将其打开,但是由于字符串路径中使用了“ \\”,因此产生了“找不到文件”错误。
这是我的代码:
def browse_inputfile(self):
global inputfile
inputfile = open(QtGui.QFileDialog.getOpenFileName(self, "Open Data File", "", "txt files (*.txt)"),'r+')`
然后有一些代码使用“ inputfile.name”显示路径。
第二个功能是这样的:
def run_conversion(self):
global inputfile
if inputfile: # if user didn't pick a file don't continue
#do stuff
inputfile.close()
我知道使用全局变量并不是一种好习惯,那么如何将打开的文件从一个函数传递给另一个函数,并让它具有功能,以便用户在文件上运行“填充”之前单击第二个按钮?
我希望他们能够在对文件进行“填充”之前检查它是否正确。
谢谢
您当前的方法风险inputfile
不退出关闭。 我会做这样的事情:
file_path = None
def browse_inputfile(self):
return QtGui.QFileDialog.getOpenFileName(self, 'Openfile', '/home')
def run_conversion(self, path):
if path: # if user didn't pick a file don't continue
with open(path) as f:
#do stuff
如果要稳固地操作文件名,请使用os.path模块https://docs.python.org/2/library/os.path.html中的功能。
将inputfile
用作类的字段,这样就无需将文件作为参数传递或使用全局变量。
class MyClass:
def browse_inputfile(self):
self.inputfile = open(QtGui.QFileDialog.getOpenFileName(self, "Open Data File", "", "txt files (*.txt)"),'r+')`
# you code for display the path
def run_conversion(self):
if self.inputfile: # if user didn't pick a file don't continue
#do stuff
self.inputfile.close()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.