将unicode参数传递给subprocess.Popen调用的外部程序

时间:2016-04-14 06:24:40

标签: python windows python-3.x unicode subprocess

(我已阅读不同的帖子和资源,不包括“The Absolute Minimum <...>”,但仍然不明白如何解决我的问题)

我想将我的目录(及其子目录)中的所有文件都提供给xmllint工具。有些文件名称中包含中文字符。

#!/usr/bin/env python3

import os, sys
import subprocess

fn_folder = "d:/test"

fn_tool_path = 'd:/libxml2-2.9.3-win32-x86_64/bin/xmllint.exe '

for root, subFolders, files in os.walk(fn_folder):
    for eachfile in files:
        fullname = os.path.join(root,eachfile)
        full_cmd = fn_tool_path + '--format ' + fullname
        subprocess.Popen(full_cmd)

例如,如果在d:\test文件夹中我有2个文件:test1.xml和test2山.xml('2'后面的中文字符),那么第一个将被正确处理,而第二个我'得到warning: failed to load external entity "file:/d:/test/test2%3F.xml" - 即“错误”字符在作为参数传递之前被转义。怎么避免这个?

0 个答案:

没有答案