gpt4 book ai didi

python - subprocess.run() 产生与手动输入不同的结果

转载 作者:行者123 更新时间:2023-12-05 04:10:38 32 4
gpt4 key购买 nike

我正在尝试通过 Python 脚本运行以下 Windows 控制台命令:

C:\My\Path\openssl.exe x509 -in C:\My\PEM\mypem.pem -noout -subject > C:\My\Data\data.txt

如果直接放入控制台,会生成预期的 1KB 文件。

使用 subprocess.run() 不会。它生成一个文件,但是一个 0KB 的文件,就好像它没有抓取 stdout 响应一样。

我尝试过但没有成功的:

# produces b''
args = 'C:/My/Path/openssl.exe x509 -in C:/My/PEM/mypem.pem -noout -subject'
data = subprocess.check_output(args)
print (data)

# produces b''
result = subprocess.Popen('C:/My/Path/openssl.exe x509 -in C:/My/PEM/mypem.pem -noout -subject', stdout = subprocess.PIPE)
print (result.stdout)

# produces a 0KB data.txt
# probably also producing a b'' thus the 0KB
subprocess.run('C:/My/Path/openssl.exe x509 -in C:/My/PEM/mypem.pem -noout -subject > C:/My/Data/data.txt')

最佳答案

如果您希望将字符串解析为带参数的命令,则需要使用 shell=True

result = subprocess.Popen('C:/My/Path/openssl.exe x509 -in C:/My/PEM/mypem.pem -noout -subject', stdout = subprocess.PIPE, shell=True)
print(result.stdout)

或者您可以将命令指定为列表:

result = subprocess.Popen(['C:/My/Path/openssl.exe', 'x509', '-in', 'C:/My/PEM/mypem.pem', '-noout', '-subject'], stdout = subprocess.PIPE)

关于python - subprocess.run() 产生与手动输入不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44141492/

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