python腳本參數
㈠ python 腳本之統計基因組文件中染色體長度及N鹼基數目
re模塊是Python中的正則表達式調用模塊,在python中,通過將正則表達式內嵌集成re模塊,程序員們可以直接調用來實現正則匹配。
正則表達式的大致匹配過程是:
re模塊所支持的方法有如下:
其中,pattern為匹配模式,由re.compile生成,例如: pattern = re.compile(r'hello')
參數flag是匹配模式,取值可以使用按位或運算符』|』表示同時生效,如 re.I | re.M。可選值有:
註:以上七個方法中的flags同樣是代表匹配模式的意思,如果在pattern生成時已經指明了flags,那麼在下面的方法中就不需要傳入這個參數了。
1. re.match(pattern, string[, flags])
2. re.search(pattern, string[, flags])
3. re.split(pattern, string[, maxsplit])
4. re.findall(pattern, string[, flags])
5. re.finditer(pattern, string[, flags])
6. re.sub(pattern, repl, string[, count])
7. re.subn(pattern, repl, string[, count])
描述
注意:該方法只能刪除開頭或是結尾的字元,不能刪除中間部分的字元。
語法
參數
返回值
實例
以上實例輸出結果如下:
參考
https://www.cnblogs.com/chengege/p/11190782.html
https://www.runoob.com/python/att-string-strip.html
㈡ Python3腳本傳參實戰(2個方法3個傳參列表的案例)
在一些測試平台對接時或者用例執行時,或多或少會用到Python腳本傳參的問題。
test.py腳本
#!/usr/bin/python3
import sys
print ('參數個數為:', len(sys.argv), '個參數。')
print ('參數列表:', str(sys.argv))
print ('腳本名:', str(sys.argv[0]))
print ('第一個參數:', sys.argv[1])
執行python3 test.py arg1 arg2 arg3
參數個數為: 4 個參數。
參數列表: ['test.py', 'arg1', 'arg2', 'arg3']
腳本名: test.py
第一個參數: arg1
test.py腳本
#!/usr/bin/python3
import argparse
# 生成了一個命令行參數的對象
parser = argparse.ArgumentParser(description='Test for argparse')
parser.add_argument('--name', '-n', help='name屬性,非必要參數')
parser.add_argument('--year', '-y', help='year 屬性,非必要參數,但有默認值', default=2017)
parser.add_argument('--body', '-b', help='body屬性,必要參數', required=True)
args = parser.parse_args()
print (args.year, args.name, args.body)
查看幫助python3 test.py --help
usage: test.py [-h] [--name NAME] [--year YEAR] --body BODY
Test for argparse
optional arguments:
-h, --help show this help message and exit
--name或-n NAME name屬性,非必要參數
--year或-y YEAR year屬性,非必要參數,但有默認值
--body或-b BODY body 屬性,必要參數
執行python3 test.py --year 2021 -n robot --body "are you ok?"
2021 robot are you ok?
以方法2中的test.py腳本為例
python3 test.py --year 2021 --body [\"test\", \"robot\",\"boy\" ]
2021 ["test", "robot", "boy" ]
以方法1中的test.py腳本為例
python3 test.py [\"test\", \"robot\",\"boy\" ]
參數個數為: 2個參數。
參數列表: ['test.py', '[\"test\", \"robot\", \"boy\" ]']
腳本名: test.py
第一個參數: ["test", "robot", "boy" ]
其實此時傳入的第一個參數是一個字元,需要轉換為列表。
import json
json.loads(sys.argv[1])
test_arg.py腳本
#!/usr/bin/python3
import argparse
import os
# 生成了一個命令行參數的對象
parser = argparse.ArgumentParser(description='Test for argparse')
parser.add_argument('--body', '-b', help='body屬性,必要參數', required=True)
args = parser.parse_args()
print (args.body)
command=python3 + ' ' + test_sys.py+ ' ' + args.body
print (command)
str=('command')
result=os.system(str)
test_sys.py腳本
#!/usr/bin/python3
import sys
import json
print ('第一個參數:', sys.argv[1])
print ('列表:', json.loads(sys.argv[1]))
執行python3 test_arg.py --body [\"test\", \"robot\",\"boy\" ]
python3 test_sys.py ["test", "robot", "boy" ]
test_sys.py執行報錯,轉json失敗。
還記得我們案例2中,腳本的傳入指定參數和實際傳入參數嘛?
test_arg.py腳本我們稍微優化下,在傳參前先字元替換下。
["test", "robot", "boy" ]轉換為[\"test\", \"robot\",\"boy\" ]即可。
command.replace(' " ' , r ' \" ') 添加到command=之後,再次運行看看呢?
㈢ 怎麼在python腳本裡面調用另外一個帶參數的腳本
一般情況下都是通過import腳本,然後直接調用腳本里的函數,調用函數就可以直接傳遞參數;因為Python並不像C語言那樣有main函數。
importB(腳本名稱)
B.hello(參數A,參數B)
㈣ Windows10 中建立自動執行的python腳本,解決python不產生日誌的問題
問題:按照網上的教程,設置了自動執行的任務,雖然腳本能運行,但是py文件並沒有產生日誌文件。
解決方法:在程序或腳本中 填寫python.exe的絕對地址,我這里填寫的是虛擬環境下的python地址
添加參數 : 這里填寫腳本wind.py的絕對位置
起始於: 填寫的是 日誌產生文件的 位置。
由於我的腳本位置和 日誌產生的位置是一樣的。所以對於文件位置不一樣的可能沒有參考意義。
下面是運行後的結果:
㈤ python腳本入參的單、雙引號
Linux的shell中存在一些特殊字元(保留字),我們將這些具有一些特殊功能的字元叫做meta(元字元),還有一些普通的,沒有特殊功能的字元我們叫做literal(文字)。bash中,常使用的引用有如下三種方法:
1、單引號:單引號中的所有meta均被當作普通字元使用。
2、雙引號:在雙引號中的大部分meta都被當作普通字元,但某些字元的功能保留(如$)。
3、反斜線:只有緊接在反斜線(跳脫字元)之後的單一meta才被當作普通字元。
Windows的cmd下,同樣也有類似的概念。單引號和雙引號有時候沒有區別(可以使用任意一個),有時候只能用特定的一個。
這篇文章主要記錄python腳本入參帶有&&符號時,在Linux和Windows平台的不同表現。
編寫python腳本quote.py,內容如下:
$ cat quote.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
print(sys.argv[1])
1、參數不使用引號
$ python quote.py whoami&&whoami
whoami
sunday
可以看出,第一個whoami被當作入參傳給腳本,第二個whoami當作bash命令,在終端執行。
2、參數使用單引號
$ python quote.py 'whoami&&whoami'
whoami&&whoami
可以看出,&&被當作普通字元,whoami&&whoami作為參數傳給了腳本。
3、參數使用雙引號
$ python quote.py "whoami&&whoami"
whoami&&whoami
可以看出,&&被當作普通字元,whoami&&whoami作為參數傳給了腳本。
在Windows執行腳本,用戶為winsunday:
1、參數不使用引號
C:\test>python quote.py whoami&&whoami
whoami
winsunday
可以看出,第一個whoami被當作入參傳給腳本,第二個whoami當作CMD命令,在終端執行。
2、參數使用單引號
C:\test>python quote.py 'whoami&&whoami'
'whoami
'whoami'' 不是內部或外部命令,也不是可運行的程序
或批處理文件。
可以看出,單引號被當作普通字元,&&對命令進行了分割,'whoami作為第一個參數被傳給腳本;whoami'被認為是一個命令進行執行(報錯了)。
3、參數使用雙引號
C:\test>python quote.py "whoami&&whoami"
whoami&&whoami
可以看出,雙引號時&&被當作普通字元,whoami&&whoami作為整體被傳給腳本。
㈥ 求助,php調用python腳本傳遞參數的問題
不成功的
python textcasting_stream_py/start_capture_stream.py rtmp://v2.gdtv.cn:1935/live/sport baw GermenVSJapan
成功的
python textcasting_stream_py/start_capture_stream.py rtmp://v2.gdtv.cn:1935/live/sport Kobe GermenVSJapan
㈦ Python語言命令行參數解析接收參數執行腳本的三種方法
在Windows系統上,Python腳本文件當然雙擊就能直接運行。不過我們往往需要在執行腳本的時候還要添加相應的參數,另外在Ubuntu系統中,我們執行文件往往和其他系統或用戶命令一樣,需要在終端中輸入,參數當然也要一並加上。所以機智客這里說的意思是,執行Python腳本(.py文件)時候需要輸入相應參數,這樣程序怎麼寫的方法。

上面這么說可能有點不明不白的,或者有朋友會用但未必知道命令行解析這種表達方式。舉個例子,比如我們在執行一個腳本文件的時候,可能會在CMD或者終端中輸入python demo.py 10或者python demo.py --separator 10後面這個數字就是參數。我們要編寫這樣的腳本或者函數,有哪些方法呢?這里列舉三種常用的。
一個是用系統模塊sys。引入模塊語句是import sys。也就是Python語言的內置庫中的sys.argv。argv通常有argv[0],argv[1],argv[2]這樣幾個參數。基本使用方法是m_sil_len = int(sys.argv[1])傳入第一個參數,sil_th = int(sys.argv[2])傳入第二個參數。如果是簡單一點的參數或者腳本,我們引入了sys。可以直接用這個傳入參數。
一種是用模塊argparse來實現,這是標准庫中推薦的命令行解析模塊。引入模塊語句是import argparse。基本使用方法是引入模塊後,先parser = argparse.ArgumentParser()創建對象,然後調用方法添加參數parser.add_argument("jzk", help="這是關於參數的說明", type=int),之後args = parser.parse_args()使用解析就可以用了。機智客看到這個方法在很多項目腳本中使用。我們在閱讀機器學習AI之類的開源項目,就會發現很多人用的都是這個方法。
還有一個就是用fire模塊,用於生成命令行界面的工具。引入模塊語言是import fire。它默認以-為參數分隔符的。基本使用方法是fire.Fire()。這個不僅可以做命令行的參數解析,還可以還給一個類class添加命令行。所以使用時候括弧里填入函數名或者類名即可,也就是裡面的參數可以是其他Python對象。
㈧ python開發命令行腳本
工作中會經常需要寫一些命令行腳本,如果還是用if,else判斷用戶輸入實在是太醜陋了。這里介紹幾個python里的命令行腳本庫,可以幫助我們快速開發好用的命令行腳本。
https://docs.python.org/3/library/cmd.html
使用方式是繼承Cmd,實現自己的子類。
參數comletekey是自動補全操作,默認值是Tab, 如果不為None 且readline可用的話,命令會自動完成。
這里的readline指的是python實現的 GNU readline 介面(標准python庫里沒有,Windows系統不支持)。
參數stdin,stdout是輸入輸出流,默認是sys.stdin,sys.stout。
cmd提供了一個簡單的框架,但是功能比較簡單,python還有其他的很多第三方庫可以用來寫命令行程序。
https://www.cnblogs.com/xueweihan/p/12293402.html 這篇文章對比了各個庫的功能,貼在這里:
看起來fire是最簡單的,來試一下。
fire 則是用一種面向廣義對象的方式來玩轉命令行,這種對象可以是類、函數、字典、列表等,它更加靈活,也更加簡單。你都不需要定義參數類型,fire 會根據輸入和參數默認值來自動判斷,這無疑進一步簡化了實現過程。
以下示例為 fire 實現的 計算器程序:
從上述示例可以看出,fire 提供的方式無疑是最簡單、並且最 Pythonic 的了。我們只需關注業務邏輯,而命令行參數的定義則和函數參數的定義融為了一體。
不過,有利自然也有弊,比如 nums 並沒有說是什麼類型,也就意味著輸入字元串'abc'也是合法的,這就意味著一個嚴格的命令行程序必須在自己的業務邏輯中來對期望的類型進行約束。
㈨ python 如何調用帶參數的shell腳本
調用帶參數的腳本,需要首先設置,舉例如下:
test.py按行解釋如下:
腳本中有漢字的話,需要聲明文件編碼格式;
導入sys模塊,這個模塊是用來獲取參數列表的;
sys.argv是一個列表,第一個是文件名,之後依次是參數列表;
列印輸出,這一步不需要多講;
保存到c:usersYYCDesktop est.py;
調用操作步驟:
打開命令行;
輸入python 文件名 第一個參數 第二個參數.....(參數之間用空格區分);
一定要注意參數個數,要以文件名開始。
㈩ python腳本中調用執行另一個帶參數python腳本的問題
cmd='/home/menglin/androguard/androaxml.py-i{}|grep"android.permission."'.format(path)
p1=subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True)