在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使用multiprocessing创建进程的方法
Jun 04 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
Nov 23 Python
1分钟快速生成用于网页内容提取的xslt
Feb 23 Python
用Django写天气预报查询网站
Oct 21 Python
Python将一个Excel拆分为多个Excel
Nov 07 Python
Python文件循环写入行时防止覆盖的解决方法
Nov 09 Python
Python 正则表达式匹配字符串中的http链接方法
Dec 25 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
Jan 08 Python
Python有参函数使用代码实例
Jan 06 Python
pytorch实现mnist分类的示例讲解
Jan 10 Python
使用python脚本自动生成K8S-YAML的方法示例
Jul 12 Python
Python机器学习之基础概述
May 19 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 file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
PHP 获取MySQL数据库里所有表的实现代码
2011/07/13 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
微博@符号的用户名提示效果。(想@到谁?)
2010/11/05 Javascript
IE6中使用position导致页面变形的解决方案(js代码)
2011/01/09 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
js字符串转成JSON
2013/11/07 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
jQuery 选择器(61种)整理总结
2016/09/26 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
Python变量作用范围实例分析
2015/07/07 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
windows 下python+numpy安装实用教程
2017/12/23 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
环保建议书作文
2014/03/12 职场文书
国际贸易专业自荐信
2014/06/10 职场文书
2014年技术部工作总结
2014/12/12 职场文书
护士年终个人总结
2015/02/13 职场文书
幼儿园个人总结
2015/02/28 职场文书
研究生导师推荐信
2015/03/25 职场文书
公司周年庆典致辞
2015/07/30 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
详细了解java监听器和过滤器
2021/07/09 Java/Android
ubuntu下常用apt命令介绍
2022/06/05 Servers