python - 将打开的文件从一个函数传递到另一个函数

我是 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 作为类的字段,这样就不需要将文件作为参数传递或使用全局变量。

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()

https://stackoverflow.com/questions/33955835/

相关文章:

nginx - nginx的访问日志的编码格式是什么?

javascript - 如何实现用户可自定义的键盘快捷键(在 javascript 中/在网络上)

javascript - ionic 如何转换和重新加载页面

javascript - jsPDF addHTML 获取滚动元素的全部内容

reactjs - ReactJS 中的嵌入式文档查看器控件

git - 删除标记但未 merge 的 Git 分支是否安全?

c++ - = make_pair 是否调用复制构造函数?

python - 在构建需要编译代码的模块时将自定义 CMake 标志传递给 pip

laravel - 如何通过 Storage Facade(在 Laravel 5 中)获取下载文件

java - 如何使用 Mysql JDBC 驱动连接 Android 和 MySQL