簡體   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