#python #tkinter #text-files #easygui
#python #tkinter #текстовые файлы #easygui
Вопрос:
Как мне сделать так, чтобы «file.write(repr(fieldNames1))» записывает то, что я ввожу в «fieldNames1»?
import easygui
#Multi Enter Box
fieldNames1= ['Situation:(Example: Waiting for a friend who is late.)','Thoughts:(EXAMPLE: My friend Bob is always late!)','Emotions:(EXAMPLE: Mad amp; Stressed)','Behavior:(EXAMPLE: Arguing with family)']
#Write to file
file = open('Fieldnames test.txt', 'a')
file.write(repr(fieldNames1))
file.close()
Создает файл с именем «Имена полей test.txt » со следующим текстом, независимо от того, что я ввожу в «fieldnNames1».
[‘Ситуация: (пример: Ожидание друга, который опаздывает.)’, ‘Мысли: (ПРИМЕР: Мой друг Боб всегда опаздывает!)’, ‘Эмоции: (ПРИМЕР: Сумасшедший и напряженный)’, ‘Поведение: (ПРИМЕР: ссора с семьей)’]
Ответ №1:
Проблема в том, что вызов repr()
списка создаст единственную строку из списка. То, что вы хотите, это что-то вроде:
f = open('output.txt', 'a')
f.write('n'.join(fieldNames1))
f.close()
write()
Метод автоматически не создает новые строки, поэтому у вас есть join()
список строк вместе с использованием новой строки, подходящей для вашей платформы (например, n
). Вы можете прочитать больше о файловых объектах в документации Python .
Кроме того, я рекомендую использовать другую переменную, чем file
, поскольку file
на самом деле это функция Python. Код будет работать, но вы должны знать о возможных сюрпризах.