每次将字符串写入新行上的文件

kau*_*hik 223 python newline

我想每次打电话时都要在我的字符串上添加换行符file.write().在Python中最简单的方法是什么?

hal*_*dan 251

使用"\n":

file.write("My String\n")
Run Code Online (Sandbox Code Playgroud)

请参阅Python手册以供参考.

  • 在较新版本的 Python (3.6+) 中,您也可以只使用 f 字符串:`file.write(f"{var1}\n")` (12认同)
  • 如果您使用变量来组成记录,则可以在末尾添加 + "\n",例如 fileLog.write(var1 + var2 + "\n")。 (6认同)

Gre*_*ill 101

您可以通过两种方式执行此操作:

f.write("text to write\n")
Run Code Online (Sandbox Code Playgroud)

或者,取决于您的Python版本(2或3):

print >>f, "text to write"         # Python 2.x
print("text to write", file=f)     # Python 3.x
Run Code Online (Sandbox Code Playgroud)

  • `,file = f`非常有用,谢谢 (4认同)
  • @kaushik:f.write('\n'.join(x))或f.writelines(x +中的i +'\n') (2认同)

Kri*_*a K 67

您可以使用:

file.write(your_string + '\n')
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用用法,例如,当将int写入文件时,可以使用*** file.write(str(a)+'\ n')*** (2认同)

mat*_*use 22

如果你广泛使用它(很多书面行),你可以继承'文件':

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')
Run Code Online (Sandbox Code Playgroud)

现在它提供了一个额外的功能,可以满足您的需求:

fid = cfile('filename.txt', 'w')
fid.wl('appends newline charachter')
fid.wl('is written on a new line')
fid.close()
Run Code Online (Sandbox Code Playgroud)

也许我错过了不同的换行符(\n,\n,...),或者最后一行也以换行符结束,但它对我有用.

  • 在这种情况下,您不需要“return None”,因为首先,您不需要它,其次,当没有“return”语句时,每个Python函数默认返回“None”。 (2认同)

cit*_*man 9

使用 fstring 从列表写入的另一种解决方案

lines = ['hello','world']
with open('filename.txt', "w") as fhandle:
  for line in lines:
    fhandle.write(f'{line}\n')
Run Code Online (Sandbox Code Playgroud)

并且作为一个函数

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'])
Run Code Online (Sandbox Code Playgroud)


Jea*_*bre 8

你可以做:

file.write(your_string + '\n')
Run Code Online (Sandbox Code Playgroud)

正如另一个答案所建议的那样,但是为什么在您可以调用file.write两次时使用字符串连接(缓慢,容易出错):

file.write(your_string)
file.write("\n")
Run Code Online (Sandbox Code Playgroud)

请注意,写操作是缓冲的,因此相当于同一件事。


Mes*_*sco 6

除非写入二进制文件,否则请使用打印。下面的示例适用于格式化 csv 文件:

def write_row(file_, *columns):
    print(*columns, sep='\t', end='\n', file=file_)
Run Code Online (Sandbox Code Playgroud)

用法:

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])
Run Code Online (Sandbox Code Playgroud)

笔记:


Pan*_*al. 5

file_path = "/path/to/yourfile.txt"
with open(file_path, 'a') as file:
    file.write("This will be added to the next line\n")
Run Code Online (Sandbox Code Playgroud)

要么

log_file = open('log.txt', 'a')
log_file.write("This will be added to the next line\n")
Run Code Online (Sandbox Code Playgroud)

  • 以“ a”作为参数而不是“ w”作为参数打开文件不会更改写入功能以您描述的方式工作。它的唯一作用是不会覆盖文件,并且文本将添加到最底行,而不是从空白文件的左上角开始。 (3认同)