在 Python 中每次都在新行上将字符串写入文件

目录

Write a string to a file on a new line every time in Python

  1. 每次在 Python 中将字符串写入新行的文件
  2. 将换行符直接添加到字符串中
  3. 使用 for 循环在新行上将字符串列表写入文件
  4. 每次使用 join() 将字符串写入新行的文件
  5. 使用旧的 open() 语法的问题

在 Python 中每次都在一个新行上将一个字符串写入文件

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

  1. 以写入模式打开文件。
  2. \n在每个字符串的末尾附加一个换行符 ( )。
  3. 使用该file.write()方法将行写入文件。
主程序
# ✅ Newer syntax (better) with open('example.txt', 'w', encoding='utf-8') as my_file: my_file.write('first line' + '\n') my_file.write('second line' + '\n') my_file.write('third line' + '\n') # ----------------------------------------------------- # ✅ Older syntax (not recommended) file = open('example.txt', 'w', encoding='utf-8') file.write('first line' + '\n') file.write('second line' + '\n') file.write('third line' + '\n') file.close()

如果您运行代码示例,您将创建一个example.txt包含以下内容的文件。

例子.txt
first line second line third line

我们使用with 语句以读取模式打开文件。

该语句会自动为我们关闭文件。

file.write()方法接受一个字符串并将字符串的内容写入文件。

我们使用加法 (+) 运算符\n在每行的末尾
添加一个换行符 ( )。

将换行符直接添加到字符串中

如果要将字符串文字写入文件,请将\n字符直接添加到每个字符串的末尾。

主程序
with open('example.txt', 'w', encoding='utf-8') as my_file: my_file.write('bobby\n') my_file.write('hadz\n') my_file.write('com\n')

使用格式化的字符串文字代替

相反,如果您需要在字符串中插入变量,请使用格式化字符串文字。

主程序
with open('example.txt', 'w', encoding='utf-8') as my_file: var1 = 'bobby' var2 = 'hadz' var3 = 'com' my_file.write(f'First line: {var1}\n') my_file.write(f'Second line: {var2}\n') my_file.write(f'Third line: {var3}\n')

输出如下所示。

例子.txt
First line: bobby Second line: hadz Third line: com

格式化字符串文字
(f-strings) 让我们通过在字符串前加上
f.

主程序
var1 = 'bobby' var2 = 'hadz' result = f'{var1}{var2}' print(result) # 👉️ bobbyhadz

确保将表达式括在大括号 – 中{expression}

使用 for 循环在新行上将字符串列表写入文件

如果您需要每次都在新行上将字符串列表写入文件,请使用for 循环。

主程序
with open('example.txt', 'w', encoding='utf-8') as my_file: a_list = ['bobby', 'hadz', 'com'] for item in a_list: my_file.write(f'{item}\n')

我们使用for循环遍历列表,在每个项目的末尾添加一个换行符并将结果写入文件。

定义一个可重用的函数

如果您必须经常这样做,请定义一个可重用的函数。

主程序
def write_on_separate_lines(file_name, lines): with open(file_name, 'w', encoding='utf-8') as file: for line in lines: file.write(f'{line}\n') write_on_separate_lines( 'example.txt', ['bobby', 'hadz', 'com'] )

该函数将文件名和行列表作为参数并将行写入文件,并在每行末尾附加一个换行符。

每次使用 join() 将一个字符串写入一个新行的文件

您也可以使用该str.join()方法每次在新行上将字符串写入文件。

主程序
with open('example.txt', 'w', encoding='utf-8') as my_file: a_list = ['bobby', 'hadz', 'com'] a_str = '\n'.join(a_list) my_file.write(f'{a_str}\n')

str.join方法将一个可迭代对象作为参数并返回一个字符串,该字符串是可迭代对象中字符串的串联

TypeError请注意,如果可迭代对象中有任何非字符串值,该方法将引发 a 。

如果您的 iterable 包含数字或其他类型,请在调用之前将所有值转换为字符串join()

主程序
with open('example.txt', 'w', encoding='utf-8') as my_file: a_list = ['bobby', 1, 'hadz', 2, 'com'] a_str = '\n'.join(map(str, a_list)) my_file.write(f'{a_str}\n')

我们
用换行符将列表中的字符串连接起来
,以将它们写到文件中的不同行中。

使用旧的 open() 语法的问题

您还可以使用要求您手动关闭文件的旧语法。

主程序
file = open('example.txt', 'w', encoding='utf-8') file.write('first line' + '\n') file.write('second line' + '\n') file.write('third line' + '\n') file.close()

代码示例在新行上将字符串写入文件,但是,我们必须在完成后手动关闭文件。

这是一个问题,因为如果在该行运行之前出现错误,我们就会发生内存泄漏。 file.close()

另一方面,with open()即使出现错误,该语句也会自动关闭文件。

file.write()在不使用with语句或调用的
情况下
调用方法
file.close()可能会导致参数file.write()未完全写入磁盘。

较新的with open()语法是一个更好的选择,应该是您的首选方法。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: