簡體   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