You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用exec()向TXT文件写入含换行符"\n"、制表符"\t"的内容并解决EOL语法错误

解决exec()写入TXT时转义字符报错的问题

哦,这个问题我刚好碰到过!你遇到的SyntaxError: EOL while scanning string literal报错,本质是三重引号f-string里的转义字符被提前解析,再加上语句分隔的小问题导致的。咱们一步步来解决:

问题根源

你用了f'''...'''格式的字符串传入exec,里面的\n会被Python直接转换成实际的换行符,导致exec执行的代码变成了这样:

print("Hi I'm Mark
", file=ab) print("\tToday I'm tired", file=ab)

第一个print的字符串被中途截断,Python找不到结束的引号,自然就报EOL错误了;另外两个print语句挤在同一行,没有分号分隔,也是潜在的语法问题。

具体解决方法

方法1:转义反斜杠+添加语句分隔符

把\n改成\\n,\t改成\\t(让f-string保留转义字符不解析),同时在两个print之间加个分号,明确这是两个独立语句:

ab = open("bonj.txt","w")
exec(f'''print("Hi I'm Mark\\n", file=ab); print("\\tToday I'm tired", file=ab) ''')
ab.close()

方法2:去掉f-string(更简洁)

既然你的exec代码里没有需要动态替换的变量,完全可以去掉f前缀,直接用三重引号字符串,这样转义字符会被exec正确解析,还可以把两个print分成两行提升可读性:

ab = open("bonj.txt","w")
exec('''
print("Hi I'm Mark\\n", file=ab)
print("\\tToday I'm tired", file=ab)
''')
ab.close()

额外提示:尽量避免用exec

除非业务逻辑强制要求,否则exec是不安全且可读性极差的写法——直接写print语句清晰得多:

ab = open("bonj.txt","w")
print("Hi I'm Mark\n", file=ab)
print("\tToday I'm tired", file=ab)
ab.close()

内容的提问来源于stack exchange,提问作者Ghofran Gogy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 22:07:38