在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 26 Python
Python中dictionary items()系列函数的用法实例
Aug 21 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
Dec 27 Python
Python 中pandas.read_excel详细介绍
Jun 23 Python
详解python单元测试框架unittest
Jul 02 Python
Django中数据库的数据关系:一对一,一对多,多对多
Oct 21 Python
在linux下实现 python 监控usb设备信号
Jul 03 Python
Django的Modelforms用法简介
Jul 27 Python
如何将 awk 脚本移植到 Python
Dec 09 Python
Pytorch 保存模型生成图片方式
Jan 10 Python
python使用自定义钉钉机器人的示例代码
Jun 24 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
Dec 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
使用XHGui来测试PHP性能的教程
2015/07/03 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
prototype 的说明 js类
2006/09/07 Javascript
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
vue实现添加标签demo示例代码
2017/01/21 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
Angular 项目实现国际化的方法
2018/01/08 Javascript
vue发送ajax请求详解
2018/10/09 Javascript
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
Vue 的 v-model用法实例
2020/11/23 Vue.js
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
[02:14]完美“圣”典2016风云人物:xiao8专访
2016/12/01 DOTA
python继承和抽象类的实现方法
2015/01/14 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
如何用python整理附件
2018/05/13 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
pyinstaller打包程序exe踩过的坑
2019/11/19 Python
jupyter修改文件名方式(TensorFlow)
2020/04/21 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
英语生日邀请函
2014/01/23 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
机关作风建设心得体会
2014/10/22 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server