将换行值写入python文件,而不用换行

时间:2018-12-05 22:51:40

标签: python string python-3.x escaping

我有一个奇怪的问题,但我正在尝试解决自己遇到的问题。我有一个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)

有什么建议吗?

3 个答案:

答案 0 :(得分:4)

如果您不希望Python在字符串文字中处理反斜杠转义符,请在其前面加上r

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

答案 1 :(得分:0)

尝试转义反斜杠。现在,您的反斜杠转义了“ n”个字符,以便将其解释为换行符。您想再次逃脱整个事情,例如,您得到的是:

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

答案 2 :(得分:0)

尝试从replace \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()