将列表写入包含文本和十六进制值的文件。怎么样?

时间:2013-03-13 20:56:42

标签: python python-3.x

我需要为文本文件写一个值列表。由于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']

2 个答案:

答案 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进行了更新