繁体   English   中英

在Python中打开文件的每一行中添加“ \\ n”

[英]Add '\n' to each line of an open file in Python

我有一些要用Python发送的邮件,我想在邮件正文中添加内容文件。

问题是在每行中添加'\\n' ...我已经做了一些测试,但是每次它在每个字母而不是每行之后都放置'\\n' ...

这是要添加到邮件中的文件(tests.new):

// Files Module
// Module Name
test.cpp
test2.cpp

这是我的脚本:

#!/usr/bin/env python3
newFile = open('tests.new','r')
tNew = newFile.read()
# mail
mail = open('mail.txt', 'w', encoding='utf8')
mail.write("New files in module \n")
# BAD PART
i = len(tNew)
z = 0
while z < i:
        mail.write(str(tNew[z].split('\n')))
        z += 1
        mail.close()

脚本的结尾(在#BAD PART )是我所做的测试之一。 不必遵循这种方式...

如果有人可以帮助我吗?

谢谢

您的问题是newFile.read()读取整个输入文件。 然后,您可以while循环中逐字节地对其进行迭代,并在每个字符之后添加换行符。 for line in newFile:节中使用for line in newFile:迭代输入文件中的行。

另外,您的mail.close()放置在错误的位置。 最好将with open("somefile.txt") as ifile:节,因为这样可以确保在块结束后正确关闭文件。

#!/usr/bin/env python3
with open('tests.new','r') as newFile: #this autocloses the file at the end of the block
    with open('mail.txt', 'w', encoding='utf8') as mail: #same
        mail.write("New files in module \n")
        for line in newFile: #iterate over lines in the inputfile instead of over characters
            mail.write("{}\n".format(line))

不良零件问题:

1) tNew[z]返回单个字符,而不是该行。 您需要先获取行列表。

2)您在循环中关闭了mail文件,然后不再打开它。

因此正确的代码必须是:

#!/usr/bin/env python3
newFile = open('tests.new','r')
tNew = newFile.read()
# mail
mail = open('mail.txt', 'w', encoding='utf8')
mail.write("New files in module \n")

# BAD PART - FIXED
lines = tNew.split('\n')
i = len(lines)
z = 0
while z < i:
    mail.write(str(lines[z] + '\n'))
    z += 1
mail.close()
newFile.close()

但我建议您以更Python化的方式重写此代码:

for line in tNew.split('\n'):
    mail.write(line + '\n')

或更好:

for line in open('tests.new', 'r'):
    mail.write(line + '\n')

而且您不需要使用z counter和i

暂无
暂无

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

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