此代码可直接在CLI中正常工作:
xmllint --xpath '//Entities[contains(ExpirationDate, '2015')]' app/sftp/file.xml > test.xml
现在,我需要在Python环境中执行相同的命令。这就是我想要的:
def process_xml(path):
call(["xmllint --xpath '//Entities[contains(ExpirationDate, '2015')]' app/sftp/file.xml > test.xml"])
这是错误,我正在从同一位置运行文件和命令:
OSError: [Errno 2] No such file or directory
答案 0 :(得分:3)
如果您与衍生过程没有任何其他关系,则可以使用os.system()
。
但是,如果您真的想使用subprocess.call
并进行流重定向,则必须使用它,如下所示:
with open('myfile', 'w') as outfile:
subprocess.call(["xmllint", "--xpath", "//Entities[contains(ExpirationDate, '2015')]", "app/sftp/file.xml"], stdout=outfile)
请注意,subprocess.call
将程序名称及其参数作为字符串列表,可能是问题