Как мне записать ввод с несколькими полями ввода в .txt?

#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. Код будет работать, но вы должны знать о возможных сюрпризах.