我有一个奇怪的问题,但我正在尝试解决自己遇到的问题。我有一个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)
有什么建议吗?
答案 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()