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