避免文件末尾的换行符 - Python

时间:2011-09-24 12:53:52

标签: python list

我想避免在python的文本文件末尾写一个换行符。这是一个我有很多问题,我相信很容易修复。这是一个例子:

fileout = open('out.txt', 'w')
list = ['a', 'b', 'c', 'd']
for i in list:
    fileout.write('%s\n' % (i))

这会在文件末尾打印一个\ n字符。如何修改循环以避免这种情况?

4 个答案:

答案 0 :(得分:8)

fileout = open('out.txt', 'w')
list = ['a', 'b', 'c', 'd']
fileout.write('\n'.join(list))

答案 1 :(得分:2)

这是一个避免创建中间字符串的解决方案,这在列表大小很大时会很有用。它不是担心文件末尾的换行符,而是将新行放在行之前打印,除了第一行,它在for循环之外处理。

fileout = open('out.txt', 'w')
mylist = ['a', 'b', 'c', 'd']
listiter = iter(mylist)
for first in listiter:
    fileout.write(first)
    for i in listiter:
        fileout.write('\n')
        fileout.write(i)

答案 2 :(得分:1)

在我看来,文本文件由文本行组成。行以换行序列终止,其具体细节是特定于平台的。因此,正确的文本文件必须始终每行包含1个换行顺序。

无论如何,您可以通过以不同方式处理最后一行,或者在内存中构建整个文件并将其写为二进制数据来解决这个问题,注意省略最后一个或两个字节,具体取决于您的平台的行饲料序列的确切格式。

答案 3 :(得分:1)

如果你有很长的列表,你不想用join()转换成一个字符串,那么好的旧旗帜可以拯救:

is_first_line = True
for s in my_list:
  if is_first_line:
    # see, no write() in this branch
    is_first_line = False 
  else:
    # we've just written a line; add a newline
    output.write('\n')
  output.write(s)