#python #tkinter
#питон #tkinter
Вопрос:
from tkinter import *
from tkinter import ttk
from tkinter.filedialog import asksaveasfile
root = Tk()
root.geometry('200x150')
Text = ['word','great','text']
def save():
text_file = asksaveasfile(title="Select Location", filetypes=(("Text Files", "*.txt"),))
with open(text_file, 'w') as f:
f.write(Text)
btn = ttk.Button(root, text = 'Save', command = lambda : save())
btn.pack(side = TOP, pady = 20)
mainloop()
Ошибка типа: ожидаемый str, байты или ос.Объект, подобный пути, а не TextIOWrapper
У меня есть список под названием Text. Я хочу распечатать содержимое списка в текстовый файл. Что мне делать?
Комментарии:
1. Что не так с вашим кодом.
2. Ошибка типа: ожидаемый str, байты или ос. Объект, подобный пути, а не TextIOWrapper
3. Я не понимаю, как этот код может выдавать эту ошибку, если
Text
это список4. f.write(«это текст») также не принимает это
5. В чем ошибка.
Ответ №1:
Это то, что работает для меня:
lst = ['Hello Theren', 'How are yan', 'All good?n']
def save():
text_file = asksaveasfile(title="Select Location", filetypes=(("Text Files", "*.txt"),))
for line in lst:
text_file.write(line) # Use str(line) if lst is of integers
Ошибка заключается в том, что asksaveasfile
возвращает _io.TextIOWrapper
объект, что означает то же самое, что и использование open(...)
одного файла. То, что вы хотели asksaveasfilename()
, это то, что вернет путь к объекту, затем:
def save():
text_file = asksaveasfilename(title="Select Location", filetypes=(("Text Files", "*.txt"),))
with open(text_file, 'w') as f:
for line in lst:
f.write(line) # Use str(line) if list of integers
Комментарии:
1. Он работает. Большое вам спасибо. Я благодарен вам.
2. текстовый файл. здесь будет работать write (строка), но если бы в списке были целые числа, это бы не сработало. текстовый файл. я думаю, что write(str (line)) является правильным.
3. @Rysicin Я предоставил строку списков, но да,
int
вам потребуется дополнительное приведение типов.