Pythonスクリプトのコマンドラインを生成する
1はじめに
リトルディアオシ:ユウ兄弟、質問してもいいですか?
Xiaoyu:拒否できますか?
Xiao Diaosi:とにかく断ることができます、女の子は私に私の足を押すように頼みました
〜Xiaoyu : ...(私は拭きます~~私は弱点に攻撃されました...)今時間があります。
リトルディアオシ:時間はありますか?
Xiaoyu:はい、質問があれば話しましょう
。Xiao Diaosi:うーん…ええと…はい、今すぐ質問できますよね?
Xiaoyu:急いで、いつそんなにインクが塗られたのですか
Xiaodiaosi:では、どういたしまして
Xiaoyu:(⊙o⊙)...
Xiaodiaosi:最近スクリプトを書いていたのですが、パラメーターを変更すると、戦争に行くために...必要なパラメータを達成するために最小限のコードを変更する簡単な方法はありますか...
Xiaoyu:詳細
〜Xiaodiaosi:さて、コードを直接見てみましょう!
2.従来の方法
ウェブサイトの情報をクロールするスクレイプメソッドを定義し、タイムアウトを5秒に設定して
、コードを表示します
# -*- coding: utf-8 -*-
# @Time : 2022-01-28
# @Author : carl_DJ
import requests
'''
定义scrape方法,爬取某网站后返回的状态及url,timeout设置为5秒
'''
def scrape(url,timeout = 5):
resp = requests.get(url=url,timeout=timeout)
resp_url = resp.url
resp_code = resp.status_code
print(f'返回状态码:{
resp_code}')
print(f'返回url:{
resp_url}')
Xiao Diaosi:直接呼び出す場合は、次のように直接行うことができます。
scrape('https://blog.csdn.net/wuyoudeyuer', 5)
Xiao Diaosi:ただし、パラメーターを変更して再度呼び出す場合は、コードを変更する必要があります
。Xiaoyu : argparseを使用して、各パラメーターを宣言できますね。
コード表示
parser = argparse.ArgumentParser(description='Scrape Function')
parser.add_argument('url', type=str,
help='an integer for the accumulator')
parser.add_argument('timeout', type=int,
help='sum the integers (default: find the max)')
if __name__ == '__main__':
args = parser.parse_args()
scrape(args.url, args.timeout)
電話をかけるときは、次のように書いてください。
python testscr.py https://blog.csdn.net/wuyoudeyuer 5
Xiao Diaosi:これも方法ですが、もっと簡単にできますか?
Xiaoyu:ええと...既製のものを食べるには多すぎます...はい、車に乗ります!
3.ファイアモジュール
3.1モジュールの紹介
Fireは、Pythonメソッドまたはクラスにコマンドラインパラメータのサポートをすばやく追加できる優れたサードパーティライブラリです。
たとえば、
最初のステップ、古いルール、インストール:
pip install fire
インストールする他の方法:
「Python3、Pythonを選択してサードパーティのライブラリを自動的にインストールし、pipに別れを告げます。!"
" Python3:すべてのPythonライブラリをインポートするために1行のコードのみを使用します!!》
3.2コード例
3.2.1パラメータの置換
インストールが完了したら、Hellocarl_Yiranの例1から始め
て簡単な例から始めましょう。
# -*- coding: utf-8 -*-
# @Time : 2022-01-28
# @Author : carl_DJ
import fire
#name直接传入默认参数
def hello(name = 'Carl_奕然'):
return "Hello %s !" %name
if __name__ == '__main__':
fire.Fire(hello)
実行結果は次のことを示しています。
Hello Carl_奕然 !
結果は素晴らしく、私たちが望むものです
が、これはどのように機能しますか?確認してみましょう。
注文の実行:
python test.py --help
表示内容:
NAME
test.py
SYNOPSIS
test.py <flags>
FLAGS
--name=NAME
Default: 'Carl_奕然'
ご覧のとおり、nameパラメーターはコマンドラインでオプションのパラメーターに変換され、nameパラメーターを--nameに置き換えることができます。
さて、やってみましょう
python test.py --name DJ
実行結果:
Hello DJ !
Little Diaosi:行きます~~さて、Yu兄弟、Zhennais!
Xiaoyu:火にはこの機能しかないと思いますか??さあ、続けて!
Xiao Diaosi:もう我慢できません...さて、パフォーマンスを続けてください。
3.2.2クラスサポート
Fireライブラリは、クラスへのコマンドラインの追加もサポートしています。
# -*- coding: utf-8 -*-
# @Time : 2022-01-28
# @Author : carl_DJ
import fire
#定义Calculator类
class Calculator(object):
#double方法
def double(self, number):
return 2 * number
if __name__ == '__main__':
fire.Fire(Calculator)
注文の実行:
python test.py
演算結果:
NAME
test.py
SYNOPSIS
test.py COMMAND
COMMANDS
COMMAND is one of the following:
double
ここでは、Calculatorクラスのメソッドを認識し、コマンドの1つがdoubleであることがわかります。ここで、doubleを再度呼び出します。
注文の実行:
python test.py double
演算結果:
ERROR: The function received no value for the required argument: number
Usage: test.py double NUMBER
For detailed information on this command, run:
test.py double --help
パラメータを渡す必要があるというエラーメッセージが表示されていることがわかります。
一度調整しています。
注文の実行:
python test.py double 3
運転結果
6
とてもいいです、私たちが望む結果です。
3.2.3コード例
最後に、最初のスクレイプ関数を変更します
# -*- coding: utf-8 -*-
# @Time : 2022-01-28
# @Author : carl_DJ
import requests
import fire
'''
定义scrape方法,爬取某网站信息,timeout设置为5秒
'''
def scrape(url,timeout = 5):
resp = requests.get(url=url,timeout=timeout)
resp_url = resp.url
resp_code = resp.status_code
print(f'返回状态码:{
resp_code}')
print(f'返回url:{
resp_url}')
if __name__ == '__main__':
fire.Fire(scrape)
注文の実行:
python test.py https://blog.csdn.net/wuyoudeyuer --timeout 5
結果:
返回状态码:200
返回url:https://blog.csdn.net/wuyoudeyuer
良い。
4.まとめ
ここに書いて、今日の共有はもうすぐ終わります。
これは主に、火による関数とクラスの変更を共有するため、コードを変更する時間を節約できます。
主なことは、私たちが別の新しいスキルを習得したことです。