繁体   English   中英

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

[英]Avoid a Newline at End of File - Python

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

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

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

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

这是一个避免创建中间字符串的解决方案,这在列表大小很大时会很有用。 它不是担心文件末尾的换行符,而是将换行符放在要打印的行之前 ,除了第一行,它在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)

在我看来,文本文件由文本行组成。 行以换行序列终止,其具体细节是特定于平台的。 因此,正确的文本文件必须始终每行包含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)

暂无
暂无

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

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