在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加密自己的密码
Aug 04 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
Aug 21 Python
Python基础练习之用户登录实现代码分享
Nov 08 Python
基于Python socket的端口扫描程序实例代码
Feb 09 Python
pandas 两列时间相减换算为秒的方法
Apr 20 Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 Python
Numpy之random函数使用学习
Jan 29 Python
解决Pandas的DataFrame输出截断和省略的问题
Feb 08 Python
让你Python到很爽的加速递归函数的装饰器
May 26 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
Nov 22 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
Jun 03 Python
Python 多进程原理及实现
Dec 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
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
php中文验证码实现示例分享
2014/01/12 PHP
Smarty中常用变量操作符汇总
2014/10/27 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
详解JavaScript中的异常处理方法
2015/06/16 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
2015/09/18 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
jQuery与Ajax以及序列化
2016/02/01 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
了解ESlint和其相关操作小结
2018/05/21 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
使用apifm-wxapi模块中的问题及解决方法
2019/08/05 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
python检测远程udp端口是否打开的方法
2015/03/14 Python
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
matlab中实现矩阵删除一行或一列的方法
2018/04/04 Python
Python创建或生成列表的操作方法
2019/06/19 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
python代码能做成软件吗
2020/07/24 Python
python 实现性别识别
2020/11/21 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
解释一下ArrayList Vector和LinkedList的实现和区别
2013/04/26 面试题
大学生的网络创业计划书
2013/12/26 职场文书
单位实习证明怎么写
2014/01/17 职场文书
收入及婚姻状况证明
2014/11/20 职场文书
公共场所卫生管理制度
2015/08/05 职场文书
Go 自定义package包设置与导入操作
2021/05/06 Golang
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers