You need to enable JavaScript to run this app. 如何在Python中按指定范围循环调用脚本?以Script2循环执行Script1共5次为例
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中按指定范围循环调用脚本?以Script2循环执行Script1共5次为例

脚本循环运行调整方案

原有Script2的代码存在三个核心问题,完全无法实现循环调用效果:

  • 导入逻辑错位:Script2中import YtTest的模块路径与实际Script1的文件名不匹配,属于无效导入
  • 执行方式错误:exec("Script1")传入的是纯字符串,既不是可执行代码块,也不是脚本文件路径,根本无法触发Script1的运行
  • 模块缓存误区:直接导入带顶层执行逻辑的Script1时,Python会对导入的模块做全局缓存,第一次导入执行完代码后,后续循环里重复导入不会重新触发脚本运行,会出现循环只执行一次的问题

方案一:封装逻辑为函数(推荐,稳定性最高)

这种方式可以完全绕开Python模块导入的缓存机制,多次调用不会出现逻辑失效的问题,还能避免全局变量污染:

  1. 调整Script1的代码结构,把浏览器操作逻辑封装成可调用函数。建议将Script1的文件名改为符合Python导入规范的script1.py(避免文件名以数字开头带来的导入兼容问题),同时将容易残留后台进程的driver.close()替换为可彻底释放资源的driver.quit(),调整后代码如下:
from selenium import webdriver
import time

def run_browser_task():
    PATH = "C:\Program Files (x86)\chromedriver.exe"
    driver = webdriver.Chrome(PATH)
    driver.get("https://www.youtube.com/?hl=pl&gl=PL")
    time.sleep(1)
    driver.quit()
  1. 调整Script2的代码,直接导入封装好的函数进行循环调用,保证两个脚本放在同一工作目录下即可:
from script1 import run_browser_task

# 按需求设置循环次数,此处为要求的5次
for loop_count in range(5):
    print(f"当前执行第 {loop_count + 1} 次任务")
    run_browser_task()

方案二:保留Script1原有结构,直接按路径调用

如果不想改动Script1的原有顶层执行逻辑,可以借助Python标准库runpy实现无缓存的脚本路径调用,完全不需要修改Script1代码:

  1. 保持Script1的原有代码不变,文件名保留为Script1.py
  2. 调整Script2代码如下:
import runpy

# 按需求设置循环次数,此处为要求的5次
for loop_count in range(5):
    print(f"当前执行第 {loop_count + 1} 次任务")
    # 传入Script1的相对路径执行,每次执行都会重新加载脚本逻辑
    runpy.run_path("Script1.py")

实操避坑提示

  • 两个脚本必须存放在同一个运行工作目录下,否则会出现模块导入失败、文件路径找不到的报错
  • 循环自动化场景下不建议使用driver.close(),多次循环后容易残留后台Chrome进程占用内存,统一替换为driver.quit()可以彻底释放浏览器占用的系统资源
  • 直接删除Script2中无效的import YtTest代码,避免无意义的导入报错

内容的提问来源于stack exchange,提问作者don34664436

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 21:15:05