繁体   English   中英

如何使 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写入标准输出(文本文件)时,您得到了您正在寻找的东西。 上面的伪表表明您可能会考虑使用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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM