Python3、3行のコードは、スクリプトのコマンドラインを自動的に生成します。私はそれを黙って収集します。

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.まとめ

ここに書いて、今日の共有はもうすぐ終わります。
これは主に、火による関数とクラスの変更を共有するため、コードを変更する時間を節約できます。
主なことは、私たちが別の新しいスキルを習得したことです。

おすすめ

転載: blog.csdn.net/wuyoudeyuer/article/details/122711661