在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 20 Python
微信跳一跳python辅助软件思路及图像识别源码解析
Jan 04 Python
Python线程下使用锁的技巧分享
Sep 13 Python
3个用于数据科学的顶级Python库
Sep 29 Python
浅谈numpy生成数组的零值问题
Nov 12 Python
Django JWT Token RestfulAPI用户认证详解
Jan 23 Python
python爬虫 模拟登录人人网过程解析
Jul 31 Python
python异步编程 使用yield from过程解析
Sep 25 Python
Python笔记之工厂模式
Nov 20 Python
Python读取YAML文件过程详解
Dec 30 Python
python 如何读、写、解析CSV文件
Mar 03 Python
Python离线安装openpyxl模块的步骤
Mar 30 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个人网站架设连环讲(四)
2006/10/09 PHP
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
2014/10/30 PHP
wordpress安装过程中遇到中文乱码的处理方法
2015/04/21 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
php验证码生成器
2017/05/24 PHP
JQuery 操作Javascript对象和数组的工具函数小结
2010/01/22 Javascript
js对table的td进行相同内容合并示例详解
2013/12/27 Javascript
nodejs教程之环境安装及运行
2014/11/21 NodeJs
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
2019/05/15 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
python中查看变量内存地址的方法
2015/05/05 Python
python+opencv轮廓检测代码解析
2018/01/05 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
2019/04/11 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
简单了解python协程的相关知识
2019/08/31 Python
Django 设置多环境配置文件载入问题
2020/02/25 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
个人简历中自我评价
2014/02/11 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
yy婚礼主持词
2014/03/14 职场文书
幼儿园教师自我鉴定
2014/03/20 职场文书
超市员工辞职信范文
2015/05/12 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis