溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何在python中實現(xiàn)導(dǎo)入一個需要傳參的模塊

發(fā)布時間:2022-02-28 15:16:18 來源:億速云 閱讀:167 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“如何在python中實現(xiàn)導(dǎo)入一個需要傳參的模塊”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“如何在python中實現(xiàn)導(dǎo)入一個需要傳參的模塊”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

最近跑實驗,遇到了一個問題:

由于實驗數(shù)據(jù)集比較多,每次跑完一個數(shù)據(jù)集就需要手動更改文件路徑,再將文件傳到服務(wù)器,再運(yùn)行實驗,這樣的話效率很低,必須要專門看著這個實驗,啥時候跑完就手動修改運(yùn)行下一個實驗。我個人無法忍受這樣低效率,就想能不能有什么解決的辦法。

我們期望的解決辦法是通過命令行傳參來解決這個問題,因為接下來是需要編寫shell腳本來批量運(yùn)行實驗,如果用輸入語句的方式顯得太笨拙。

在編寫實驗代碼的時候,我將所有的參數(shù)集中到一個py文件中,這樣便于后期的維護(hù),現(xiàn)在的問題就是需要通過命令行傳參的方式改變該文件中的某些值。

關(guān)于傳參,python中提供了argparse這一模塊。通過這個模塊 就能很快的實現(xiàn)命令行傳參的功能。

下面舉個例子:

文件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

我們可以通過改變命令行的參數(shù)來改變這個name的值,其實關(guān)于這一點也比較好理解,我們可以想成python將這三份代碼拼接在一起,再一起執(zhí)行。

這樣就實現(xiàn)了我剛才想要的功能。

補(bǔ)充:python調(diào)用模塊時傳參出錯的解決方案

首先定義了一個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中調(diào)用該模塊:

#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()

可是運(yùn)行后發(fā)現(xiàn)出錯:

明明傳參是"jinbian3333","jinbian76",為什么登錄信息是圖中呢?

回頭查看被調(diào)用模塊,

按我理解就是 加了" " 就不是變量了,是常量了, 你調(diào)用了該模塊,即使傳參 它還是按照模塊本身的設(shè)置:“username”"password"運(yùn)行

讀到這里,這篇“如何在python中實現(xiàn)導(dǎo)入一個需要傳參的模塊”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI