擅长:python、mysql、java
<p>我能想到的解决这个问题的最好方法是添加另一个函数。尝试将getFileInfo(self)更改为:</p>
<pre><code>def getFileInfo(self):
global filename
filename = askopenfilename()
return open(filename, mode="rb")
</code></pre>
<p>它基本上与上一个函数做相同的事情,只是它使文件成为全局的。然后生成另一个名为getFileName(self)的函数,如下所示。你知道吗</p>
<pre><code>def getFileName(self):
return filename
</code></pre>
<p>现在调用process函数时,使用self.getFileName文件名而不是self.getFileInfo文件地址:</p>
<pre><code>process(self.getFileName, outputText, split_start)
</code></pre>
<p>如果您想知道为什么会得到绑定方法输出,可能是因为您正在打开文件而没有读取它。基本上当你运行print时self.log文件,它正在返回一个文件对象。这是我尝试在桌面上打印打开的文件时发生的情况:</p>
<pre><code>#Input
print askopenfile(mode="rb")
#Output
<open file u'C:/Users/User/Desktop/stuff.txt', mode 'rb' at 0x029BA078>
</code></pre>
<p>这就是我打印文件并使用read()时发生的情况:</p>
<pre><code>#Input
print askopenfile(mode="rb").read()
#Output
These are words in the file stuff.txt.
</code></pre>
<p>这个文档<a href="https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files" rel="nofollow">here</a>提供了一个关于文件及其工作方式的好主意。还要记住在读取完文件后关闭它,以防止出现其他问题。你知道吗</p>