我需要为文本文件写一个值列表。由于Windows,当我需要编写换行符时,Windows会执行\ n \ r和其他系统执行\ n。
我想到也许我应该用二进制文件写入文件。
如何创建类似以下示例的列表并以二进制文件写入文件?
output = ['my first line', hex_character_for_line_feed_here, 'my_second_line']
以下哪项不起作用?
output = ['my first line', '\x0a', 'my second line']
答案 0 :(得分:3)
别。在文本模式下打开文件,让Python为您处理换行。
当您使用open()
function时,您可以设置Python应如何使用newline
关键字参数处理换行符:
将输出写入流时,如果换行符为
None
,则写入的任何'\n'
个字符都将转换为系统默认行分隔符os.linesep
。如果换行符为''
或'\n'
,则不会进行任何翻译。如果换行符是任何其他合法值,则写入的任何'\n'
个字符都将转换为给定的字符串。
因此,默认方法是为您的平台编写正确的行分隔符:
with open(outputfilename, 'w') as outputfile:
outputfile.write('\n'.join(output))
并且正确的事情;在Windows \r\n
上保存字符而不是\n
。
如果您特别想要编写\n
并且没有Python为您翻译这些内容,请使用newline=''
:
with open(outputfilename, 'w', newline='') as outputfile:
outputfile.write('\n'.join(output))
请注意,'\x0a'
与<{1}}完全相同; \n
是\r
:
\x0d
答案 1 :(得分:1)
在与Python脚本相同的目录中创建一个文本文件“myTextFile”。然后写下类似的东西:
# wb opens the file in "Write Binary" mode
myTextFile = open("myTextFile.txt", 'wb')
output = ['my first line', '369as3', 'my_second_line']
for member in output:
member.encode("utf-8") # Or whatever encoding you like =)
myTextFile.write(member + "\n")
这将输出一个二进制文本文件,如下所示:
my first line
369as3
my_second_line
编辑:针对Python 3进行了更新