python - 带参数的 Windows 子进程

标签 python windows python-2.7

我需要运行 pdb2mdb.exe 实用程序,并将 DLL 文件作为参数传递。

经过长时间的谷歌搜索,并尝试了各种call/Popen - 我仍然找不到解决方案...

这是最后的代码:

def pdb2mdb(logger, modsrcdll):


    os.chdir("C:\\Program Files (x86)\\Unity\\Editor\\Data\\MonoBleedingEdge\\lib\\mono\\4.0\\")
    subprocess.call("pdb2mdb.exe %s" % modsrcdll)

但是 - 这种方式 pdb2mdb.exe 不想接受参数,并打印它的帮助:

Copy file d:\***.dll to C:\cloudlibrary\data
Copy file D:\***.dll.xml to C:\cloudlibrary\data
PDP FOUND
pdbexe found
Mono pdb to mdb debug symbol store converter
Usage: pdb2mdb assembly

没有 os.chdir() - 它根本无法解析 C:\\Program Files (x86)...

我之前在linux下用过subprocess.call(),从来没有出现过这样的问题,例如:

subprocess.call('ls -l %s | grep -v total' % self.path, shell=True)

最佳答案

你可以试试subprocess.Popen

p = subprocess.Popen("pdb2mdb.exe modsrcdll", stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
out, err = p.communicate()
print out
print err

示例:下面的代码将从C:\\Windows\\System32 打开notepad.exe 并给出文件 test.txt 作为参数。这同样适用于您的 .dll

import subprocess

    def myFunc():   
        p = subprocess.Popen("C:\\Windows\\System32\\notepad.exe c:\\Users\\admin\\Desktop\\test.txt", stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        out, err = p.communicate()
        print out
        print err

    myFunc()

关于python - 带参数的 Windows 子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30663706/

相关文章:

python - Django QuerySet 上的计数与 len

java - Tomcat : Doesn't accept the username and password, 无法查看Server Status,Manager App页面,为什么会这样?

windows - 检查 Win32 线程是否正在运行或处于挂起状态

windows - 在 Windows 上将 --perf-basic-prof 选项与 Node 结合使用

python - 使 isinstance(obj, cls) 与装饰类一起工作

python - 如何计算以字符串开头的单词数

python - 为特定范围内的值建立索引

Python:将打印函数作为参数发送

python - 为什么第一次导入 skimage 失败,但第二次导入成功?

mysql - Pandas 按日期合并,如列不起作用