【发布时间】:2019-12-05 03:18:52
【问题描述】:
我正在通过 FTP 将文件推送到相机。我想将 ips 输入到我的脚本中,然后创建一个列表,然后为输入的每个 ip 打开一个新的 cmd 提示符,并执行指定的命令以成功将文件同时推送到多个 ips(每个在他们自己的 cmd 提示符中)
如果我将推送脚本作为独立运行,我的推送脚本就可以工作。我可以获取主文件以将 ips 收集到一个列表中,然后一次打开它们以将配置单独推送到每个摄像机(因此它最终将一次完成所有 ips 1)。我尝试设置一个调用 Windows 批处理文件的 python 脚本,然后调用该脚本来运行,但由于无法从主文件中读取列表,我无法让它工作。我也尝试将 f1 导入固件,就像你导入一个模块一样,但它会将整个文件拉入其中,只会创建更多 cmd 提示并继续循环,除了制作弹出窗口之外什么都不做
f1.py
import subprocess, os
xlist = []
while True:
x = str(input('What Ips Are We Upgrading? '))
if x == "":
break
elif x not in xlist:
xlist.append(x)
alist = xlist
for ip in alist:
subprocess.Popen("start cmd /K Firmware.py ", shell=True)
固件.py
import time
import keyboard
keyboard.write("ftp " + ip)
time.sleep(3)
keyboard.press_and_release('enter')
time.sleep(3)
keyboard.write("root")
time.sleep(3)
keyboard.press_and_release('enter')
keyboard.write("pass")
time.sleep(3)
keyboard.press_and_release('enter')
keyboard.write("bin")
time.sleep(3)
keyboard.press_and_release('enter')
keyboard.write("hash")
time.sleep(3)
keyboard.press_and_release('enter')
keyboard.write("put 1.bin flash")
time.sleep(3)
keyboard.press_and_release('enter')
我希望它为每个输入打开 1 个 cmd 提示符并执行 Firmware.py 中的步骤 但是,我不断收到未定义“ip”的错误(来自 Firmware.py),或者它会遍历列表但一次只有一个 ip,然后当它完成后它会做另一个(但一次只有一个)
【问题讨论】:
标签: python-3.x subprocess popen