如何编写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
相关产品推荐
相关产品推荐

