在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中的__init__和__new__
Mar 12 Python
用实例分析Python中method的参数传递过程
Apr 02 Python
简单的Python的curses库使用教程
Apr 11 Python
requests和lxml实现爬虫的方法
Jun 11 Python
对numpy 数组和矩阵的乘法的进一步理解
Apr 04 Python
Python循环中else,break和continue的用法实例详解
Jul 11 Python
python redis 批量设置过期key过程解析
Nov 26 Python
Python Scrapy框架第一个入门程序示例
Feb 05 Python
深入浅析Python 命令行模块 Click
Mar 11 Python
Python实现京东抢秒杀功能
Jan 25 Python
Python中的 Set 与 dict
Mar 13 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
Apr 14 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基础知识:类与对象(1)
2006/12/13 PHP
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
PHP源码之explode使用说明
2011/08/05 PHP
使用PHP如何实现高效安全的ftp服务器(一)
2015/12/20 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
微信小程序rich-text富文本用法实例分析
2019/05/20 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
Python遍历目录的4种方法实例介绍
2015/04/13 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
2016/10/12 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
2017/10/20 Python
matplotlib中legend位置调整解析
2017/12/19 Python
Python元字符的用法实例解析
2018/01/17 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
深入探究HTML5的History API
2015/07/09 HTML / CSS
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
Marriott中国:万豪国际酒店查询预订
2016/09/02 全球购物
2014年中班下学期工作总结
2014/12/11 职场文书
德能勤绩工作总结
2015/08/11 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书
创业计划书之网吧
2019/10/10 职场文书
html,css,javascript是怎样变成页面的
2023/05/07 HTML / CSS