Python subprocess.Popen参数异常:无法解析完整参数字符串
解决subprocess.Popen参数截断问题
你的代码出现参数截断,是因为参数传递方式和shell=True的使用逻辑不匹配,导致--base-path参数没被正确识别。
正确写法1(推荐,更安全)
不用shell=True,把每个命令参数拆成列表的独立元素:
randport = random.randint(3000, 7000) subprocess.Popen( ['appium', '-p', str(randport), '--base-path', '/wd/hub'], cwd="C:\\Users\\Computer" )
正确写法2(如果必须用shell=True)
把完整命令拼成单个字符串传递:
randport = random.randint(3000, 7000) cmd = f'appium -p {randport} --base-path /wd/hub' subprocess.Popen(cmd, cwd="C:\\Users\\Computer", shell=True)
原代码出错原因
当你用['appium', args]搭配shell=True时,subprocess会把列表第一个元素作为shell执行的命令主体,第二个元素会被shell当作单一参数解析——一旦遇到空格,shell就会截断参数,只保留第一个空格前的内容,后面的--base-path /wd/hub自然丢失。
内容的提问来源于stack exchange,提问作者Mary Lovin
相关产品推荐
相关产品推荐

