如何正确地使用子chgport在输入读取?

时间:2019-01-31 20:18:16

标签: python windows subprocess

我有两种不同类型的Arduino兆2560个板。使用命令模式和另一个chgport可以很容易地检测到一个。我没有问题,建立子进程来运行命令模式。当我设置subprocess.run来运行命令chgport时,无法获得与在命令提示符下手动键入chgport所得到的相同答案。

我在Windows命令行中输入chgport并得到:

COM5 = \Device\Serial2

我建立的Python 3.7.2命令:

subprocess.run(["chgport"],shell=True,stdout=subprocess.PIPE)

我得到了这个输出,这不是我期望的:

CompletedProcess(args=['chgport'], returncode=1, stdout=b'')

我希望:

stdout=b'COM5 = \Device\Serial2'

我尝试过的代码:

a=subprocess.run(["chgport"],shell=True,stdout=subprocess.PIPE)

print(a.stdout.decode('utf-8'))

1 个答案:

答案 0 :(得分:0)

嗨,我放弃了使用子进程,所以我使用了os。下面的代码有效。首先,我重定向

mode的输出到文件中,然后读取文件。

import os

import sys

dir=os.popen("echo %cd%").readlines()[0].strip("\n")+"\\"


os.popen("cd "+dir+ """&& mode>"""+dir+"junk")

com = os.popen("more "+dir+"junk | findstr COM""").readlines()
os.popen("del "+dir+"junk")
port=com[0]
first=port.find("COM")
second=port.find(":")

print(port[first:second])