Я пытаюсь написать массив (список?) В текстовый файл с помощью Python 3. В настоящее время у меня есть:
def save_to_file(*text):
with open('/path/to/filename.txt', mode='wt', encoding='utf-8') as myfile:
for lines in text:
print(lines, file = myfile)
myfile.close
Это записывает то, что выглядит как массив прямо в текстовый файл, т.е.
['element1', 'element2', 'element3']
[email protected]:/path$
То, что я хочу сделать, - создать файл с
element1
element2
element3
[email protected]:/path$
Я пробовал разные способы прокрутки и добавления "\n", но кажется, что запись сбрасывает массив за одну операцию. Вопрос аналогичен Как написать список строк в файл, добавив новые строки? но синтаксис выглядел так, как будто для Python 2? Когда я попробовал модифицированную версию:
def save_to_file(*text):
myfile = open('/path/to/filename.txt', mode='wt', encoding='utf-8')
for lines in text:
myfile.write(lines)
myfile.close
... оболочка Python дает "TypeError: должен быть str, а не список", который, я думаю, обусловлен изменениями между Python2 и Python 3. Что мне не хватает, чтобы получить каждый элемент в новой строке?
EDIT: Спасибо @agf и @arafangion; Объединив то, что вы написали, я придумал:
def save_to_file(text):
with open('/path/to/filename.txt', mode='wt', encoding='utf-8') as myfile:
myfile.write('\n'.join(text))
myfile.write('\n')
Похоже, что у меня была часть проблемы с "* текстом" (я прочитал, что расширяет аргументы, но не нажимал, пока вы не написали, что [element] становится [[element]], что я получаю str-not- тип списка, я все время думал, что мне нужно сказать определение, что он получает список/массив, переданный ему, и что просто указание "тест" будет строкой.) Он работал, как только я изменил его только на текст и использовал myfile. write with join, а дополнительный \n помещает в окончательную новую строку в конце файла.