я использую f.writelines (str (x)) для записи в файл, где x - это список, чтобы теперь сказать, как записать список x в файл, который обрабатывает каждый список, начиная с новой строки
kaushik
2
@kaushik: f.write ('\ n'.join (x)) или f.writelines (i +' \ n 'для i in x)
Стивен,
Я думаю, что метод f.write лучше, поскольку его можно использовать как в Python 2, так и в 3.
вы можете использовать использование, например, когда вы записываете int в файл, вы можете использовать file.write (str (a) + '\ n')
May 陆家嘴 顶尖 的 投资 人
@xikhari Почему? file.write(f"my number is: {number}\n")это просто хорошо и читабельно.
Гимут
25
Если вы используете его широко (много письменных строк), вы можете создать подкласс 'file':
class cfile(file):#subclass file to have a more convienient use of writelinedef __init__(self, name, mode ='r'):
self = file.__init__(self, name, mode)def wl(self, string):
self.writelines(string +'\n')
Теперь он предлагает дополнительную функцию wl, которая делает то, что вы хотите:
fid = cfile('filename.txt','w')
fid.wl('appends newline charachter')
fid.wl('is written on a new line')
fid.close()
Может быть, я пропускаю что-то вроде других символов новой строки (\ n, \ r, ...) или что последняя строка также заканчивается новой строкой, но это работает для меня.
В return Noneэтом случае вам не нужно, потому что, во-первых, вам это не нужно, а во-вторых, каждая функция Python возвращается Noneпо умолчанию, когда нет returnоператора.
Анна
10
Вы могли бы сделать:
file.write(your_string +'\n')
как подсказывает другой ответ, но зачем использовать конкатенацию строк (медленную, подверженную ошибкам), когда вы можете вызвать file.writeдважды:
file.write(your_string)
file.write("\n")
обратите внимание, что записи буферизуются, так что это одно и то же.
Открытие файла с «a» в качестве параметра вместо «w» не меняет write на функцию для работы так, как вы описали. Единственный эффект, который он имеет, заключается в том, что файл не будет перезаписан, а текст будет добавлен в самую нижнюю строку вместо того, чтобы начинаться в верхнем левом углу пустого файла.
демократ
2
Просто примечание, fileне поддерживается Python 3и было удалено. Вы можете сделать то же самое с помощью openвстроенной функции.
Это решение, которое я придумал, пытаясь решить эту проблему для себя, чтобы систематически создавать \ n в качестве разделителей. Он пишет, используя список строк, где каждая строка является одной строкой файла, однако кажется, что это может работать и для вас. (Python 3. +)
#Takes a list of strings and prints it to a file.def writeFile(file, strList):
line =0
lines =[]while line < len(strList):
lines.append(cheekyNew(line)+ strList[line])
line +=1
file = open(file,"w")
file.writelines(lines)
file.close()#Returns "\n" if the int entered isn't zero, otherwise "".def cheekyNew(line):if line !=0:return"\n"return""
Почему не просто with open(path, "w") as file: for line in strList: file.write(line + "\n")? Таким образом, вы можете удалить все списки работы, проверки и всего 3 строки.
file.write(f"{var1}\n")
Вы можете сделать это двумя способами:
или, в зависимости от вашей версии Python (2 или 3):
источник
Ты можешь использовать:
источник
file.write(f"my number is: {number}\n")
это просто хорошо и читабельно.Если вы используете его широко (много письменных строк), вы можете создать подкласс 'file':
Теперь он предлагает дополнительную функцию wl, которая делает то, что вы хотите:
Может быть, я пропускаю что-то вроде других символов новой строки (\ n, \ r, ...) или что последняя строка также заканчивается новой строкой, но это работает для меня.
источник
return None
этом случае вам не нужно, потому что, во-первых, вам это не нужно, а во-вторых, каждая функция Python возвращаетсяNone
по умолчанию, когда нетreturn
оператора.Вы могли бы сделать:
как подсказывает другой ответ, но зачем использовать конкатенацию строк (медленную, подверженную ошибкам), когда вы можете вызвать
file.write
дважды:обратите внимание, что записи буферизуются, так что это одно и то же.
источник
или
источник
Просто примечание,
file
не поддерживаетсяPython 3
и было удалено. Вы можете сделать то же самое с помощьюopen
встроенной функции.источник
Если вы не пишете в двоичные файлы, используйте print. Ниже приведен пример, подходящий для форматирования CSV-файлов:
Использование:
Ноты:
'{}, {}'.format(1, 'the_second')
- https://pyformat.info/ , PEP-3101*columns
в определении функции - отправляет любое количество аргументов в список - см. вопрос по * args & ** kwargsисточник
Другое решение, которое пишет из списка, используя fstring
источник
Это решение, которое я придумал, пытаясь решить эту проблему для себя, чтобы систематически создавать \ n в качестве разделителей. Он пишет, используя список строк, где каждая строка является одной строкой файла, однако кажется, что это может работать и для вас. (Python 3. +)
источник
with open(path, "w") as file: for line in strList: file.write(line + "\n")
? Таким образом, вы можете удалить все списки работы, проверки и всего 3 строки.