【问题标题】:Is there a way to import a varible from a list made by another python script?有没有办法从另一个 python 脚本创建的列表中导入变量?
【发布时间】: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


    【解决方案1】:

    要将 IP 地址传递给第二个脚本,您应该将其添加到 firmware.py 脚本的命令行中。然后就可以通过sys.argv访问了。

    for ip in alist:
        subprocess.Popen(['python3', 'Firmware.py', str(ip)])
    

    在Firmware.py 中,IP 地址应在sys.argv[1] 中。

    如果你想使用 FTP,为什么不使用ftplib module?这可能比启动单独的脚本与 FTP 程序通信要容易得多。

    from ftplib import FTP
    
    # Create FTP instance and log in
    ftp = FTP(host=ip, user='root', passwd='pass')
    ftp.transfercmd('put 1.bin flash')
    # or maybe ftp.storbinary? Haven't used manual FTP in years...
    

    最后,FTP 传输的速度将受到网络到相机的带宽的限制。所以我不确定是否值得同时启动多个进程。无论如何,如果您想这样做,concurrent.futures 模块可以提供帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-15
      • 2019-03-26
      • 2020-11-16
      • 2020-08-20
      • 2019-03-03
      • 2020-09-22
      • 1970-01-01
      • 2021-07-21
      相关资源
      最近更新 更多