Python 3 - 打开和保存文件的全部内容
Python 3 - Open and Save files full contents
我正在尝试使用 'askopenfilename' 打开一个文件,然后将该文件的内容保存到一个新文件中。然后我可以打开那个新文件进行修改。但是,当我尝试这样做时,我遇到了错误。任何帮助表示赞赏。
def startapp(self):
self.grid()
filebutton = tkinter.Button(self, text="Open File for Selection button", command=self.getfile)
filebutton.grid(column=1, row=0)
quitbutton = tkinter.Button(self, text="Quit", command=quit)
quitbutton.grid(column=2, row=0)
self.grid_columnconfigure(0, weight=1)
def getfile(self): #this is the open file function
selectedfile = filedialog.askopenfilename(filetypes=[('All files', '*.*')])
temp = tempfile.TemporaryFile()
temp.write(selectedfile)
提供的错误:
Exception in Tkinter callback Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1533, in __call__
return self.func(*args)
File "C:/Users/**/PycharmProjects/FileAnalyser/FileAnalyser1/GUI/ParentWindow.py", line 31, in getfile
temp.write(selectedfile)
File "C:\Python34\lib\tempfile.py", line 399, in func_wrapper
return func(*args, **kwargs)
TypeError: 'str' does not support the buffer interface
您似乎正在尝试将文本(字符串)写入此文件。如果是这样,您需要在通过更改
创建 TemporaryFile
时指定非二进制模式
temp = tempfile.TemporaryFile()
到
temp = tempfile.TemporaryFile(mode='w')
请参阅 this answer for more details and the tempfile docs,了解它默认为期望字节而不是字符串的事实。
我正在尝试使用 'askopenfilename' 打开一个文件,然后将该文件的内容保存到一个新文件中。然后我可以打开那个新文件进行修改。但是,当我尝试这样做时,我遇到了错误。任何帮助表示赞赏。
def startapp(self):
self.grid()
filebutton = tkinter.Button(self, text="Open File for Selection button", command=self.getfile)
filebutton.grid(column=1, row=0)
quitbutton = tkinter.Button(self, text="Quit", command=quit)
quitbutton.grid(column=2, row=0)
self.grid_columnconfigure(0, weight=1)
def getfile(self): #this is the open file function
selectedfile = filedialog.askopenfilename(filetypes=[('All files', '*.*')])
temp = tempfile.TemporaryFile()
temp.write(selectedfile)
提供的错误:
Exception in Tkinter callback Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1533, in __call__
return self.func(*args)
File "C:/Users/**/PycharmProjects/FileAnalyser/FileAnalyser1/GUI/ParentWindow.py", line 31, in getfile
temp.write(selectedfile)
File "C:\Python34\lib\tempfile.py", line 399, in func_wrapper
return func(*args, **kwargs)
TypeError: 'str' does not support the buffer interface
您似乎正在尝试将文本(字符串)写入此文件。如果是这样,您需要在通过更改
创建TemporaryFile
时指定非二进制模式
temp = tempfile.TemporaryFile()
到
temp = tempfile.TemporaryFile(mode='w')
请参阅 this answer for more details and the tempfile docs,了解它默认为期望字节而不是字符串的事实。