我在Python脚本中使用tkinter定义了一些文件名,如下所示:
def save_file(self):
self.filename = tkFileDialog.asksaveasfilename(title="Save...", filetypes=([("Excel Workbook","*.xlsx")]))
最后,应将这些变量的文件名写入文本文件:
text_out = open('output.txt', 'w')
text_out.write("The first filename is " + self.filename + " + '\n')
text_out.write("The first pathname is " + self.filelocation + '\n')
text_out.close()
但它不起作用。有没有人有任何想法?我也尝试过:
text_out.write("The first filename is " + str(self.filename) + " + '\n')
但没有加快结果。
答案 0 :(得分:0)
您遇到语法错误。有一个双引号可以启动一个字符串,但没有一个可以结束它。
text_out.write("The first filename is " + str(self.filename) + " + '\n')
# ^ string start
该行应如下所示:
text_out.write("The first filename is " + str(self.filename) + '\n')
在旁注中,您应该在上下文中使用文件,即with
语句:
with open('output.txt', 'w') as text_out:
text_out.write("The first filename is " + self.filename + " + '\n')
text_out.write("The first pathname is " + self.filelocation + '\n')
这确保即使发生异常也会关闭文件。打字也少了。 ;)
答案 1 :(得分:-1)
我从命令行尝试了它并收到此错误消息:
SyntaxError: EOL while scanning string literal
这似乎意味着Python并不喜欢拥有' \ n'在与+
粘在一起的一串字符串的末尾。尝试将项目作为列表处理并加入它们,如下所示:
text_out = open('output.txt', 'w')
filewrite = ''.join([
'The first filename is ', self.filename, '\n',
'The first pathname is ', self.filelocation, '\n'])
text_out.write(filewrite)
text_out.close()
我从 Python Cookbook 中得到了这个想法,它对我有用。