gpt4 book ai didi

python - 带参数的 Windows 子进程

转载 作者:可可西里 更新时间:2023-11-01 11:50:40 25 4
gpt4 key购买 nike

我需要运行 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com