You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Python模块脚本(如module.py)并在其他脚本中调用?

Python模块编写与调用实现方案

问题分析

你当前的module.py存在一个问题:代码直接在模块顶层执行,当main.py导入它时,会自动启动Chrome浏览器并打开Instagram页面,这不符合模块的复用性要求。正确的做法是将业务逻辑封装成函数或类,让调用方决定何时执行。


改造后的module.py

将原有逻辑封装成函数,实现可控制的初始化操作:

import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import os
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

def init_instagram_driver():
    opt = Options()
    opt.add_experimental_option("excludeSwitches", ["enable-automation"])
    
    driver = webdriver.Chrome(options=opt)
    insta_url = 'https://www.instagram.com/'
    driver.get(insta_url)
    delay = 3
    return driver, delay

改造后的main.py

在main.py中导入模块并按需调用函数:

import module

# 调用模块中的初始化函数,获取浏览器实例和延迟参数
driver, delay = module.init_instagram_driver()

# 在这里编写你的业务代码,比如页面元素操作
# 示例:等待用户名输入框加载
try:
    WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.NAME, "username")))
    print("页面加载完成")
except TimeoutException:
    print("页面加载超时")

# 操作完成后记得关闭浏览器
# driver.quit()

关键注意事项

  • 文件位置:确保module.py和main.py在同一文件夹下,若不在同一路径,需将module.py所在目录添加到Python环境变量sys.path中。
  • 依赖准备:提前安装依赖包:pip install selenium,同时确保Chrome浏览器与对应版本的ChromeDriver配置完成。
  • 封装原则:模块内尽量只定义函数、类和常量,避免顶层执行代码,这样导入模块时不会触发不必要的操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:55:14