在Python文件中写入换行符而不产生新行

3

我有一个有点奇怪的问题,但我正在尝试解决它。我有一个Python脚本,它将另一个存储的Python脚本写入新文件中。问题是它写入的脚本包含换行符(\n)。但它并没有写入 \n,而是换了一行。有什么办法可以解决这个问题吗?

f = open('email.py','r+')
readcontent = f.read()
f.seek(0, 0)
f.write('''\
def sendemail(from_addr, to_addr_list, cc_addr_list, subject, message, login, password, smtpserver='smtp.gmail.com:587'):
    header  = 'From: %s\n' % from_addr
    header += 'To: %s\n' % ','.join(to_addr_list)
    header += 'Cc: %s\n' % ','.join(cc_addr_list)
    header += 'Subject: %s\n' % subject
    message = header + message

    server = smtplib.SMTP(smtpserver)
    server.starttls()
    server.login(login,password)
    problems = server.sendmail(from_addr, to_addr_list, message)
    server.quit()
''')    
f.close()

我尝试了这个,但它没有起作用:
f = open('email.py','r+',newline=None)

有什么建议吗?


replace\n with \\n - Kian
3个回答

4

如果你不想让Python处理字符串中的反斜杠转义字符,就在字符串前面加上r

f.write(r'''
...
''')

1
这解决了我的问题,还有其他代码中的问题!非常感谢。我会在可以的时候接受这个答案。 - Evan Edwards
@EvanEdwards 你总是可以接受一个答案(据我所知)。为什么你不能呢? - Eb946207
@EthanK 在你可以进行操作之前需要等待一定的时间(大约10分钟)。 - Evan Edwards
1
哦,我不知道那个。谢谢@EvanEdwards! - Eb946207

0

尝试转义反斜杠。现在你的反斜杠转义了“n”字符,以便它被解释为换行符。你想再次转义整个内容,这样你得到的就是:

    header  = 'From: %s\\n' % from_addr

0
尝试将 \n 替换为 \\n
f = open('email.py','r+')
readcontent = f.read()
f.seek(0, 0)
f.write('''\
def sendemail(from_addr, to_addr_list, cc_addr_list, subject, message, login, password, smtpserver='smtp.gmail.com:587'):
    header  = 'From: %s\n' % from_addr
    header += 'To: %s\n' % ','.join(to_addr_list)
    header += 'Cc: %s\n' % ','.join(cc_addr_list)
    header += 'Subject: %s\n' % subject
    message = header + message

    server = smtplib.SMTP(smtpserver)
    server.starttls()
    server.login(login,password)
    problems = server.sendmail(from_addr, to_addr_list, message)
    server.quit()
'''.replace('\n', '\\n'))    
f.close()

1
这将替换掉本应该是换行符的换行符。 - user2357112

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接