在python中实现导入一个需要传参的模块


Posted in Python onMay 12, 2021

最近跑实验,遇到了一个问题:

由于实验数据集比较多,每次跑完一个数据集就需要手动更改文件路径,再将文件传到服务器,再运行实验,这样的话效率很低,必须要专门看着这个实验,啥时候跑完就手动修改运行下一个实验。我个人无法忍受这样低效率,就想能不能有什么解决的办法。

我们期望的解决办法是通过命令行传参来解决这个问题,因为接下来是需要编写shell脚本来批量运行实验,如果用输入语句的方式显得太笨拙。

在编写实验代码的时候,我将所有的参数集中到一个py文件中,这样便于后期的维护,现在的问题就是需要通过命令行传参的方式改变该文件中的某些值。

关于传参,python中提供了argparse这一模块。通过这个模块 就能很快的实现命令行传参的功能。

下面举个例子:

文件test1.py

import argparse
from argparse import RawTextHelpFormatter
              
parse = argparse.ArgumentParser(description="The parameters for the feature select method", formatter_class=RawTextHelpFormatter)
parse.add_argument('name', type = str)
 
args = parse.parse_args() 
name = args.name

  

文件test3.py

import test1 
str = test1.name + 'asdasdasd'

文件test2.py

import test3 
print test3.str

运行:

在python中实现导入一个需要传参的模块

我们可以通过改变命令行的参数来改变这个name的值,其实关于这一点也比较好理解,我们可以想成python将这三份代码拼接在一起,再一起执行。

这样就实现了我刚才想要的功能。

补充:python调用模块时传参出错的解决方案

首先定义了一个Login模块

传参是两个:username,password

#coding=utf-8
def login(self,username,password):
    driver=self.driver
    self.driver.implicitly_wait(30)#不加等待会出错
    driver.switch_to.frame(0)
    driver.find_element_by_class_name("dlemail").clear()
    driver.find_element_by_class_name('dlemail').send_keys("username")
    driver.find_element_by_class_name('dlpwd').clear()
    driver.find_element_by_class_name('dlpwd').send_keys("password")
    driver.find_element_by_id("dologin").click()
def logout(self):
    driver=self.driver
    driver.find_element_by_link_text(u"退出").click()
    driver.quit()

在Test.login中调用该模块:

#coding=utf-8
from selenium import webdriver
import unittest,time
from public import Login
class TestLogin(unittest.TestCase):
    def setUp(self):
        self.driver=webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.base_url = "http://www.126.com/"
        self.verificationErrors = []
    def test_login(self):
        driver=self.driver
        driver.get(self.base_url)
        Login.login(self,"jinbian3333","jinbian76")#传参是这两个
        text=driver.find_element_by_id("spnUid").text
        self.assertEqual(text,"jinbian3333@126.com")
        Login.logout(self)
    def tearDown(self):
        self.driver.quit()
        self.assertEqual([],self.verificationErrors)
if __name__ == '__main__':
    unittest.main()

可是运行后发现出错:

在python中实现导入一个需要传参的模块

明明传参是"jinbian3333","jinbian76",为什么登录信息是图中呢?

回头查看被调用模块,

在python中实现导入一个需要传参的模块

按我理解就是 加了" " 就不是变量了,是常量了, 你调用了该模块,即使传参 它还是按照模块本身的设置:“username”"password"运行

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
python多线程抓取天涯帖子内容示例
Apr 03 Python
Python中查看文件名和文件路径
Mar 31 Python
Python输入二维数组方法
Apr 13 Python
PyTorch CNN实战之MNIST手写数字识别示例
May 29 Python
python 对key为时间的dict排序方法
Oct 17 Python
Python中的上下文管理器相关知识详解
Sep 19 Python
python实现大学人员管理系统
Oct 25 Python
python 实现批量替换文本中的某部分内容
Dec 13 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
Feb 24 Python
Jupyter notebook 远程配置及SSL加密教程
Apr 14 Python
PIP和conda 更换国内安装源的方法步骤
Sep 21 Python
Python 中如何使用 virtualenv 管理虚拟环境
Jan 21 Python
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
PyTorch 如何设置随机数种子使结果可复现
May 12 #Python
Python Parser的用法
May 12 #Python
pytorch MSELoss计算平均的实现方法
May 12 #Python
Django如何创作一个简单的最小程序
May 12 #Python
Pytorch中TensorBoard及torchsummary的使用详解
pytorch 一行代码查看网络参数总量的实现
May 12 #Python
You might like
Smarty+QUICKFORM小小演示
2007/02/25 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
javascript 短路法代码精简
2009/08/20 Javascript
JavaScript打开word文档的实现代码(c#)
2012/04/16 Javascript
jquery 表格的增行删行实现思路
2013/03/21 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
AngularJS入门教程之服务(Service)
2016/07/27 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
原生js实现下拉框功能(支持键盘事件)
2017/01/13 Javascript
详解angularJs中关于ng-class的三种使用方式说明
2017/06/02 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
nodejs实现简单的gulp打包
2017/12/21 NodeJs
在小程序/mpvue中使用flyio发起网络请求的方法
2018/09/13 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
2018/09/28 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
Vue 指令实现按钮级别权限管理功能
2019/04/23 Javascript
layui输入框中只允许输入整数的实现方法
2019/09/18 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
Python实现Linux监控的方法
2019/05/16 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
使用pandas读取文件的实现
2019/07/31 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
2020/05/18 Python
Python lambda表达式原理及用法解析
2020/08/18 Python
Python的信号库Blinker用法详解
2020/12/31 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
英国演唱会订票网站:Ticket Selection
2018/03/27 全球购物
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
C语言如何决定使用那种整数类型
2016/11/26 面试题
11月升旗仪式讲话稿
2014/02/15 职场文书
人力资源主管职责范本
2014/03/05 职场文书
2015年国培研修感言
2015/08/01 职场文书
初中思品教学反思
2016/02/20 职场文书
Python使用protobuf序列化和反序列化的实现
2021/05/19 Python
Golang并发操作中常见的读写锁详析
2021/08/30 Golang