我正在尝试从 Python 调用“sed”,并且无法通过 subprocess.check_call() 或 os.system() 传递命令行。
我在 Windows 7 上,但使用来自 Cygwin 的“sed”(它在路径中)。
如果我从 Cygwin shell 执行此操作,它可以正常工作:
$ sed 's/&nbsp;/\ /g' <"C:foobar" >"C:foobar.temp"
在 Python 中,我在“名称”中得到了我正在使用的完整路径名。我试过:
command = r"sed 's/&nbsp;/\ /g' " + "<" '\"' + name + '\" >' '\"' + name + '.temp' + '\"'
subprocess.check_call(command, shell=True)
所有的连接都是为了确保我在输入和输出文件名周围有双引号(以防 Windows 文件路径中有空格)。
我还尝试将最后一行替换为:
os.system(command)
无论哪种方式,我都会收到此错误:
sed: -e expression #1, char 2: unterminated `s' command
'amp' is not recognized as an internal or external command,
operable program or batch file.
'nbsp' is not recognized as an internal or external command,
operable program or batch file.
然而,正如我所说,它在控制台上运行良好。我究竟做错了什么?