繁体   English   中英

将打开的文件从一个功能传递到另一个功能

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM