[英]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.