在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字典多条件排序方法实例
Jun 30 Python
python基于windows平台锁定键盘输入的方法
Mar 05 Python
详解Python中break语句的用法
May 14 Python
MySQL中表的复制以及大型数据表的备份教程
Nov 25 Python
使用Kivy将python程序打包为apk文件
Jul 29 Python
Python实现求笛卡尔乘积的方法
Sep 16 Python
python3库numpy数组属性的查看方法
Apr 17 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
Aug 03 Python
python的中异常处理机制
Aug 30 Python
Face++ API实现手势识别系统设计
Nov 21 Python
Python3转换html到pdf的不同解决方案
Mar 11 Python
pygame实现五子棋游戏
Oct 29 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
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
PHP关于foreach复制知识点总结
2019/01/28 PHP
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
JQuery中的html()、text()、val()区别示例介绍
2014/09/01 Javascript
简单分析javascript面向对象与原型
2015/05/21 Javascript
《JavaScript函数式编程》读后感
2015/08/07 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
基于javascript实现数字英文验证码
2017/01/25 Javascript
原生JS实现层叠轮播图
2017/05/17 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
Postman环境变量全局变量使用方法详解
2020/08/13 Javascript
python中的一些类型转换函数小结
2013/02/10 Python
Python实现确认字符串是否包含指定字符串的实例
2018/05/02 Python
Python学习笔记之视频人脸检测识别实例教程
2019/03/06 Python
Python实现元素等待代码实例
2019/11/11 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
出纳员岗位责任制
2014/02/11 职场文书
基层党组织公开承诺书
2014/03/28 职场文书
企业法人代表任命书
2014/06/06 职场文书
安全横幅标语
2014/06/09 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
django 认证类配置实现
2021/11/11 Python
Redis过期数据是否会被立马删除
2022/07/23 Redis
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers