如何使 Python 中的 file.write() 方法显式写入换行符?
How to make the file.write() method in Python explicitly write the newline characters?
我正在尝试将文本写入明确显示所有换行符 (\n
、\r
、\r\n
) 的输出文件。我正在使用 Python 3 和 Windows 7。我的想法是通过将我正在写入的字符串转换为字节来做到这一点。
我的代码如下所示:
file_object = open(r'C:\Users\me\output.txt', 'wb')`
for line in lines:
line = bytes(line, 'UTF-8')
print('Line: ', line) #for debugging
file_object.write(line)
file_object.close()
标准输出(我的 Windows 终端)的 print(
) 语句如我所愿。例如,一行看起来像这样,其中 \n
字符可见。
Line: b'<p class="byline">Foo C. Bar</p>\n'
但是,write()
方法不会在我的 output.txt 文件中显式打印任何换行符。为什么 write()
没有在我的输出文本文件中明确显示换行符,即使我正在以字节模式编写,但 print
却在 windows 终端中明确显示换行符?
将字符串或字节写入文本或二进制文件时 Python 的作用:
- 字符串到文本文件。直接写入。
- 字节到文本文件。 写入
repr
。
- 字符串到二进制文件。 抛出异常。
- 字节到二进制文件。直接写入。
你说当你写一个 bytes
到标准输出(一个文本文件)时你得到了你想要的东西。上面的伪 table 建议您考虑使用 repr
。具体来说,如果您正在寻找输出 b'<p class="byline">Foo C. Bar</p>\n'
,那么您正在寻找 bytes
对象的 repr
。如果 line
是一个 str
开始,而你实际上并不需要 b
开头,你可能会寻找字符串的 repr
,'<p class="byline">Foo C. Bar</p>\n'
。如果是这样,你可以这样写:
with open(r'C:\Users\me\output.txt', 'w') as file_object:
for line in lines:
file_object.write(repr(line) + '\n')
我正在尝试将文本写入明确显示所有换行符 (\n
、\r
、\r\n
) 的输出文件。我正在使用 Python 3 和 Windows 7。我的想法是通过将我正在写入的字符串转换为字节来做到这一点。
我的代码如下所示:
file_object = open(r'C:\Users\me\output.txt', 'wb')`
for line in lines:
line = bytes(line, 'UTF-8')
print('Line: ', line) #for debugging
file_object.write(line)
file_object.close()
标准输出(我的 Windows 终端)的 print(
) 语句如我所愿。例如,一行看起来像这样,其中 \n
字符可见。
Line: b'<p class="byline">Foo C. Bar</p>\n'
但是,write()
方法不会在我的 output.txt 文件中显式打印任何换行符。为什么 write()
没有在我的输出文本文件中明确显示换行符,即使我正在以字节模式编写,但 print
却在 windows 终端中明确显示换行符?
将字符串或字节写入文本或二进制文件时 Python 的作用:
- 字符串到文本文件。直接写入。
- 字节到文本文件。 写入
repr
。 - 字符串到二进制文件。 抛出异常。
- 字节到二进制文件。直接写入。
你说当你写一个 bytes
到标准输出(一个文本文件)时你得到了你想要的东西。上面的伪 table 建议您考虑使用 repr
。具体来说,如果您正在寻找输出 b'<p class="byline">Foo C. Bar</p>\n'
,那么您正在寻找 bytes
对象的 repr
。如果 line
是一个 str
开始,而你实际上并不需要 b
开头,你可能会寻找字符串的 repr
,'<p class="byline">Foo C. Bar</p>\n'
。如果是这样,你可以这样写:
with open(r'C:\Users\me\output.txt', 'w') as file_object:
for line in lines:
file_object.write(repr(line) + '\n')