如何使用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
相关产品推荐
相关产品推荐

