在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 itertools模块详解
May 09 Python
python判断windows系统是32位还是64位的方法
May 11 Python
python 自动去除空行的实例
Jul 24 Python
Python实现常见的回文字符串算法
Nov 14 Python
Python多图片合并PDF的方法
Jan 03 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
Python 获取项目根路径的代码
Sep 27 Python
Python高级特性——详解多维数组切片(Slice)
Nov 26 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
Apr 27 Python
python如何输出反斜杠
Jun 18 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
Nov 02 Python
call在Python中改进数列的实例讲解
Dec 09 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
php调用C代码的实现方法
2014/03/11 PHP
JS 字符串连接[性能比较]
2009/05/10 Javascript
动态刷新 dorado树的js代码
2009/06/12 Javascript
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
javascript回到顶部特效
2016/07/30 Javascript
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
基于vue2.x的电商图片放大镜插件的使用
2018/01/22 Javascript
JS中Map和ForEach的区别
2018/02/05 Javascript
[04:44]DOTA2英雄梦之声_第12期_矮人直升机
2014/06/21 DOTA
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
深入解读Python解析XML的几种方式
2016/02/16 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
利用CSS3的定位页面元素
2009/08/29 HTML / CSS
英国网上购买门:Direct Doors
2018/06/07 全球购物
杰夫·班克斯男士服装网上商店:Jeff Banks
2019/10/24 全球购物
TCP/IP的分层模型
2013/10/27 面试题
应届生法律顾问求职信
2013/11/19 职场文书
大学系主任推荐信范文
2013/12/24 职场文书
机械设计毕业生自荐信
2014/02/02 职场文书
金融管理专业求职信
2014/07/10 职场文书
教师党员自我评价2015
2015/03/04 职场文书
水电施工员岗位职责
2015/04/11 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
导游词之桂林
2019/08/20 职场文书
创业计划书之川味火锅店
2019/09/02 职场文书
使用pytorch实现线性回归
2021/04/11 Python
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs
MySQL系列之一 MariaDB-server安装
2021/07/02 MySQL
Python绘制散点图之可视化神器pyecharts
2022/07/07 Python