使用python

时间:2015-11-06 12:52:42

标签: python linux python-2.7 xmllint

此代码可直接在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

1 个答案:

答案 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将程序名称及其参数作为字符串列表,可能是问题