我需要触发这个在终端上运行完美的查询:
sed -i '' '/default\]/a\'$'\n'' Hello world'$'\n' <PATH_TO_FILE>
这会在我找到的位置下方添加一行&#34;默认值]&#34;字符串。
使用python代码:
query = r""" sed -i '' '/default\]/a\'$'\n'' Hello world'$'\n' %s """ % (PATH_T)_FILE)
proc = subprocess.Popen(query.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = proc.communicate()
但是,命令在python中失败,错误:
Error executing the query sed -i '' '/default\]/a\'$'\n'' Hello world'$'\n' /Users/hshah/tmpFile . output = , error = sed: 1: "'/default\]/a\'$'\n''": invalid command code '
这可能是什么问题?
答案 0 :(得分:2)
每个空白处split
。这会导致query.split()
['sed',
'-i',
"''",
"'/default\\]/a\\'$'\\n''",
'Hello',
"world'$'\\n'",
'/tmp/foo']
这不是你想要的。手动构建subprocess.Popen
的参数,而不是分割字符串。