首页 > 解决方案 > 将带有多个引号/特殊字符的多行(来自另一个文件)回显到一个新文件中?

问题描述

我有一个 python 脚本,它打开一个文件并读取它:

f= open("/file.dat", "r").read()

file.dat是一个多行文件,包含引号、空格、换行符和特殊字符,例如#,&,"

我想回显f到一个名为t.dat. 我努力了:

cd= "echo \"{}\" >> t.dat".format(f)
os.system(cd)

它将文件内容打印到屏幕上,直到其中的“& config”和错误: sh:32:Config:未找到

也尝试了以下方法,结果相似:

cd= "$echo \"{}\" >> t.dat".format(f)
cd= "$echo {} >> t.dat".format(f)

执行此操作的正确方法是什么?谢谢!

标签: pythonlinuxshellcommand-lineecho

解决方案


利用shlex.quote()

import shlex

cd = r"printf '%s\n' {} >> t.dat".format(shlex.quote(f.read()))

推荐阅读