Python 中的写入行

Subodh Adhikari 2023年1月30日 2021年10月2日
  1. 在 Python 中使用 write()writelines() 方法将指定文本写入文件
  2. 在 Python 中使用 write()writelines() 方法将可迭代对象写入文件
Python 中的写入行

本教程将介绍和解释 Python 中 write()writelines() 方法之间的区别。

在 Python 中使用 write()writelines() 方法将指定文本写入文件

write() 方法需要一个字符串作为参数并将其写入文件。如果我们提供一个字符串列表,它将引发异常。writelines() 方法需要一个可迭代的参数。此外,write() 方法显示输出但不提供换行符,而 writelines() 方法显示输出并在字符串末尾提供换行符。重要的是要注意 writelines() 不会在迭代中的每个项目后自动插入一个新行。我们必须自己提供一条新线路。如果我们有很多行要写入文件,writelines() 可能是更好的选择。它表现良好,因为它不创建临时连接字符串,只是遍历行。

在下面的程序中,我们以写模式打开了文件 samplefile.txtlines 变量是一个元组,即一个不可变的字符串集合。当我们尝试执行程序时,它引发了异常类型的错误。我们提供给 write() 方法的参数是一个导致错误的元组。在这里,我们使用 with 方法进行文件处理。此方法提供了更好的语法和异常处理。因此,在适用的情况下使用 with 方法是一种很好的做法。该方法很有用,因为任何打开的文件都将在完成后关闭。

示例代码:

# python 3.x
nl = "\n"
line1 = "Good"
line2 = "Morning"
line3 = "Sunshine"
lines = line1, nl, line2, nl, line3, nl
with open('samplefile.txt', 'w') as f:
    f.write(lines)

输出:

TypeError: write() argument must be str, not tuple

在类似的上下文中,当我们使用 writelines() 时,程序会成功执行,并创建一个名为 samplefile.txt 的文件,其中 lines 作为参数传递给 writelines() 方法。

示例代码:

# python 3.x
nl = "\n"
line1 = "Good"
line2 = "Morning"
line3 = "Sunshine"
lines = line1, nl, line2, nl, line3, nl
with open('samplefile.txt', 'w') as f:
    f.writelines(lines)

输出:

Good
Morning
Sunshine

对于同一个程序,多行连接到一个名为 lines_joined 的字符串变量,它很容易被接受为 write() 方法的参数。

示例代码:

# python 3.x
nl = "\n"
line1 = "Good"
line2 = "Morning"
line3 = "Sunshine" 
lines_joined = line1 + nl + line2 + nl + line3 + nl
with open('samplefile.txt', 'w') as f:
    f.write(lines_joined)

输出:

Good
Morning
Sunshine

在 Python 中使用 write()writelines() 方法将可迭代对象写入文件

join() 方法获取可迭代对象中的所有项目并将它们连接成一个字符串。在下面的程序中,我们使用了 join() 方法和 '\n' 作为粘合剂来连接 lines 中的字符串。这是一种更好的串联方法,而不是使用 + 运算符。

示例代码:

# python 3.x
lines = ["Hello", "World"]
with open('hello.txt', 'w') as f:
    f.write('\n'.join(lines))

输出:

Hello
World

对极长的字符串列表使用 join() 方法效率较低。在这种情况下,会在写入之前在内存中创建一个全新的非常长的字符串。因此,在下面的程序中,我们使用生成器表达式将字符串写入换行符。在这里,数据是分段写入的。

示例代码:

# python 3.x
lines = ["Hello", "World"]
with open('hello.txt', 'w') as f:
    for l in lines:
        f.write('%s\n' % l)

输出:

Hello
World

与上面相同的程序是通过 writelines() 方法实现的。它使用生成器表达式并动态创建以换行符结尾的字符串。writelines() 方法迭代这个字符串序列并写入每个项目。

示例代码:

# python 3.x 
lines = ["Hello", "World"]
with open('hello.txt', 'w') as file:
    file.writelines("%s\n" % t for t in texts)

输出:

Hello
World

相关文章 - Python File