每次调用file.write()
时,我希望在我的字符串末尾添加一个换行符。在Python中,最简单的方法是什么?
你可以用两种方式实现:
f.write("text to write\n")
或者,取决于您的Python版本(2或3):
print >>f, "text to write" # Python 2.x
print("text to write", file=f) # Python 3.x
你可以使用:
file.write(your_string + '\n')
file.write(f"我的数字是:{number}\n")
很好,易读。 - Guimoute如果您要广泛使用它(大量的书面行),您可以对“file”进行子类化:
class cfile(file):
#subclass file to have a more convienient use of writeline
def __init__(self, name, mode = 'r'):
self = file.__init__(self, name, mode)
def wl(self, string):
self.writelines(string + '\n')
现在它提供了一个额外的函数wl,可以实现您想要的功能:
with cfile('filename.txt', 'w') as fid:
fid.wl('appends newline charachter')
fid.wl('is written on a new line')
也许我漏掉了一些类似于不同的换行符(\ n,\ r,...)或最后一行也以换行符结束的东西,但这对我很有效。
return None
,因为首先,您不需要它;其次,当没有return
语句时,每个Python函数默认返回None
。 - Annafile
应该在文件打开时作为参数应用。 - ekydfejj你可以这样做:
file.write(your_string + '\n')
如另一篇回答所建议的那样,为什么要使用字符串拼接(速度慢、容易出错),当你可以调用file.write
两次:
像另一个答案建议的那样,但为什么要使用字符串连接(速度慢,容易出错),当您可以调用file.write
两次:
file.write(your_string)
file.write("\n")
请注意,写入是有缓冲的,因此它等同于相同的事情。
使用fstring从列表中写入的另一种解决方案
lines = ['hello','world']
with open('filename.txt', "w") as fhandle:
for line in lines:
fhandle.write(f'{line}\n')
作为一个函数
def write_list(fname, lines):
with open(fname, "w") as fhandle:
for line in lines:
fhandle.write(f'{line}\n')
write_list('filename.txt', ['hello','world'])
file_path = "/path/to/yourfile.txt"
with open(file_path, 'a') as file:
file.write("This will be added to the next line\n")
或者log_file = open('log.txt', 'a')
log_file.write("This will be added to the next line\n")
除非写入二进制文件,否则请使用print。以下示例适用于格式化csv文件:
def write_row(file_, *columns):
print(*columns, sep='\t', end='\n', file=file_)
使用方法:
PHI = 45
with open('file.csv', 'a+') as f:
write_row(f, 'header', 'phi:', PHI, 'serie no. 2')
write_row(f) # additional empty line
write_row(f, data[0], data[1])
您也可以使用partial作为创建此类包装器的更pythonic方式。在下面的示例中,row
是具有预定义kwargs的print
。
from functools import partial
with open('file.csv', 'a+') as f:
row = partial(print, sep='\t', end='\n', file=f)
row('header', 'phi:', PHI, 'serie no. 2', end='\n\n')
row(data[0], data[1])
注:
'{}, {}'.format(1, 'the_second')
- 参考https://pyformat.info/, PEP-3101*columns
- 将任意数量的参数传递给列表 - 请参阅关于*args和**kwargs的问题需要注意的是,在 Python 3
中不支持使用 file
,且已经被移除。你可以使用内置函数 open
来完成同样的功能。
f = open('test.txt', 'w')
f.write('test\n')
好的,这里有一种安全的方法。
with open('example.txt', 'w') as f:
for i in range(10):
f.write(str(i+1))
f.write('\n')
这将数字1到10写入每行一个的新行中。
file.write(f"{var1}\n")
。 - halfdan