欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python命令行執(zhí)行方法及技巧分享

 更新時間:2025年04月11日 09:51:11   作者:編程咕咕gu-  
這篇文章主要介紹了Python編程中使用命令行工具的基本操作和進階技巧,通過編寫Python腳本,理解Python解釋器,以及在命令行中執(zhí)行腳本,可以實現(xiàn)數(shù)據(jù)處理和系統(tǒng)任務(wù)的自動化,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

引言

在Python編程中,命令行工具是一種強大且高效的交互方式。通過命令行,我們可以直接運行Python腳本,處理數(shù)據(jù),執(zhí)行系統(tǒng)任務(wù)等。

步驟一:編寫Python腳本

首先,我們需要創(chuàng)建一個Python文件。在任意文本編輯器(如Notepad、Visual Studio Code或PyCharm)中,新建一個文件,并將其命名為hello.py(擴展名為.py表明這是一個Python文件)。在文件中輸入以下簡單代碼:

# hello.py 文件內(nèi)容 
print("Hello, World!")

步驟二:理解Python解釋器

Python解釋器是執(zhí)行Python代碼的程序。在大多數(shù)安裝了Python的系統(tǒng)中,都默認(rèn)安裝了Python解釋器。

步驟三:在命令行中執(zhí)行Python腳本

  • 打開命令行終端(Windows用戶可按Win+R鍵,輸入cmd后回車;Mac和Linux用戶可以在Terminal應(yīng)用中操作)。

  • 使用cd命令切換到你的Python腳本所在的目錄。例如,如果hello.py位于桌面上,則可以輸入:

    對于Windows用戶:cd C:\Users\YourUsername\Desktop

    對于Mac/Linux用戶:cd /Users/YourUsername/Desktop

  • 確認(rèn)當(dāng)前路徑下有你的Python腳本文件,可以通過ls命令(Mac/Linux)或dir命令(Windows)查看。

  • 運行Python腳本,輸入以下命令并回車:

python hello.py

如果一切正常,你應(yīng)該能在命令行界面看到輸出的"Hello, World!"。

進階技巧

  • 指定Python版本執(zhí)行:如果你的電腦上安裝了多個Python版本,可以通過指定完整路徑來選擇使用哪個版本的Python解釋器執(zhí)行腳本,如 C:\Python37\python.exe hello.py。

  • 模塊化執(zhí)行:如果你的Python腳本定義了一個主函數(shù)(如main()),可以在命令行中直接調(diào)用該函數(shù),這通常在大型項目中更為常見:

# hello.py 文件內(nèi)容 
def main(): 
    print("Hello, World!") 
 
if __name__ == "__main__": 
    main()

在命令行中依然執(zhí)行 python hello.py,由于if條件判斷,main()函數(shù)會被自動執(zhí)行。

  • 命令行參數(shù)傳遞:Python還允許我們在命令行中向腳本傳遞參數(shù),這些參數(shù)可以通過sys.argv訪問。例如:

import sys
def main(name):
    print(f"Hello, {name}!")
if 
name
 == "
__main__
":
    if len(sys.argv) > 1:
        main(sys.argv[1])
    else:
        print("Please provide a name.")

在命令行中執(zhí)行 python hello.py Alice,將會輸出 "Hello, Alice!"。

以上就是Python命令行執(zhí)行文件的基本操作和一些進階技巧。

多參數(shù)傳遞與處理

在實際開發(fā)中,我們常常需要向Python腳本傳遞多個命令行參數(shù)。Python的sys.argv列表提供了這樣的功能,其中sys.argv[0]是腳本名本身,從sys.argv[1:]開始則是傳入的參數(shù)。

下面是一個處理多參數(shù)的示例:

import sys
def main(first_name, last_name):
    print(f"Hello, {first_name} {last_name}!")
if 
name
 == "
__main__
":
    if len(sys.argv) > 2:
        # 提取命令行參數(shù)
        first_name = sys.argv[1]
        last_name = sys.argv[2]
        main(first_name, last_name)
    else:
        print("Please provide both first name and last name.")

保存上述代碼為hello.py,然后在命令行中執(zhí)行如下命令:

python hello.py Alice Smith

運行后,輸出將是 "Hello, Alice Smith!"。

為了更優(yōu)雅地處理命令行參數(shù),Python還提供了一個強大的第三方庫 argparse,可以用來創(chuàng)建用戶友好的命令行接口:

import argparse
def main(first_name, last_name):
    print(f"Hello, {first_name} {last_name}!")
if 
name
 == "
__main__
":
    # 創(chuàng)建解析器
    parser = argparse.ArgumentParser(description="Say hello to someone.")
    parser.add_argument('first_name', help='The person\'s first name')
    parser.add_argument('last_name', help='The person\'s last name')
    # 解析參數(shù)
    args = parser.parse_args()
    # 使用解析后的參數(shù)調(diào)用主函數(shù)
    main(args.first_name, args.last_name)

安裝argparse命令

pip install argparse

同樣,在命令行中執(zhí)行 python hello.py Alice Smith,效果和前面的例子一樣,但通過argparse庫,你可以添加更復(fù)雜、更靈活的參數(shù)選項和驗證邏輯。

接下來我們展示如何使用argparse處理更多復(fù)雜場景,例如添加可選參數(shù)和參數(shù)組:

import argparse
def main(first_name, last_name, greeting='Hello', age=None):
    if age:
        print(f"{greeting}, {first_name} {last_name}, you are {age} years old!")
    else:
        print(f"{greeting}, {first_name} {last_name}!")
if 
name
 == "
__main__
":
    # 創(chuàng)建解析器
    parser = argparse.ArgumentParser(description="Say hello to someone.")
 
    # 添加必需的參數(shù)
    parser.add_argument('first_name', help='The person\'s first name')
    parser.add_argument('last_name', help='The person\'s last name')
    # 添加一個可選的問候語參數(shù),默認(rèn)為"Hello"
    parser.add_argument('-g', '--greeting', default='Hello', help='The greeting message')
    # 添加一個可選的年齡參數(shù),并設(shè)置類型為整數(shù)
    parser.add_argument('-a', '--age', type=int, help='The person\'s age')
    # 解析命令行參數(shù)
    args = parser.parse_args()
    # 使用解析后的參數(shù)調(diào)用主函數(shù)
    main(args.first_name, args.last_name, args.greeting, args.age)

現(xiàn)在在命令行中執(zhí)行腳本時,你可以提供更多的選項:

  • 默認(rèn)情況:python hello.py Alice Smith

  • 自定義問候語:python hello.py Alice Smith -g "Hi there"

  • 提供年齡信息:python hello.py Alice Smith -a 30

  • 同時指定問候語和年齡:python hello.py Alice Smith -g "Hey" -a 25

通過這種方式,你的Python腳本可以更加靈活地處理多種輸入?yún)?shù),提高其可用性和擴展性。當(dāng)然,我們可以進一步擴展argparse的使用,包括添加標(biāo)志參數(shù)、設(shè)置參數(shù)默認(rèn)值、以及定義參數(shù)組以更好地組織和解釋命令行選項:???????

import argparse
def main(first_name, last_name, greeting='Hello', verbose=False, age=None):
    if verbose:
        print(f"Executing with the following parameters: first_name={first_name}, last_name={last_name}, greeting={greeting}, age={age}")
 
    if age:
        message = f"{greeting}, {first_name} {last_name}, you are {age} years old!"
    else:
        message = f"{greeting}, {first_name} {last_name}!"
    print(message)
if 
name
 == "
__main__
":
    # 創(chuàng)建解析器
    parser = argparse.ArgumentParser(description="Say hello to someone.")
 
    # 添加必需的參數(shù)
    parser.add_argument('first_name', help='The person\'s first name')
    parser.add_argument('last_name', help='The person\'s last name')
    # 添加一個可選的問候語參數(shù),默認(rèn)為"Hello"
    parser.add_argument('-g', '--greeting', default='Hello', help='The greeting message')
    # 添加一個布爾型標(biāo)志參數(shù),用于控制詳細(xì)輸出
    parser.add_argument('-v', '--verbose', action='store_true', help='Verbose output for debugging purposes')
    # 添加一個名為'optional'的參數(shù)組,并在其中定義年齡參數(shù)
    group_optional = parser.add_argument_group('Optional arguments')
    group_optional.add_argument('-a', '--age', type=int, help='The person\'s age')
    # 解析命令行參數(shù)
    args = parser.parse_args()
    # 使用解析后的參數(shù)調(diào)用主函數(shù)
    main(args.first_name, args.last_name, args.greeting, args.verbose, args.age)

現(xiàn)在,你可以通過-v或--verbose來開啟詳細(xì)的調(diào)試信息輸出:

python hello.py Alice Smith -v -a 30

這樣運行腳本將會顯示詳細(xì)的參數(shù)信息,然后再執(zhí)行正常的問候邏輯。這個例子展示了如何利用argparse提供的強大功能來設(shè)計和實現(xiàn)復(fù)雜的命令行接口。

我們還可以進一步擴展argparse的功能,包括處理列表類型的參數(shù)。以下是一個示例,該腳本接受一個或多個興趣愛好作為參數(shù):???????

import argparse
def main(first_name, last_name, greeting='Hello', verbose=False, age=None, hobbies=[]):
    if verbose:
        print(f"使用以下參數(shù)執(zhí)行: first_name={first_name}, last_name={last_name}, greeting={greeting}, age={age}, hobbies={hobbies}")
    if age:
        message = f"{greeting}, {first_name} {last_name}, you are {age} years old and enjoy {', '.join(hobbies)}."
    else:
        message = f"{greeting}, {first_name} {last_name}. You enjoy {', '.join(hobbies)}."
    print(message)
if 
name
 == "
__main__
":
    # 創(chuàng)建解析器
    parser = argparse.ArgumentParser(description="Say hello to someone.")
 
    # 添加必需的參數(shù)
    parser.add_argument('first_name', help='The person\'s first name')
    parser.add_argument('last_name', help='The person\'s last name')
    # 添加可選的問候語參數(shù),默認(rèn)為"Hello"
    parser.add_argument('-g', '--greeting', default='Hello', help='The greeting message')
    # 添加布爾型標(biāo)志參數(shù)用于詳細(xì)輸出
    parser.add_argument('-v', '--verbose', action='store_true', help='Verbose output for debugging purposes')
    # 添加年齡參數(shù)
    parser.add_argument('-a', '--age', type=int, help='The person\'s age')
    # 添加一個名為'hobbies'的列表類型參數(shù),可以多次指定
    parser.add_argument('-H', '--hobby', action='append', help='A hobby of the person')
    # 解析命令行參數(shù)
    args = parser.parse_args()
    # 使用解析后的參數(shù)調(diào)用主函數(shù)
    main(args.first_name, args.last_name, args.greeting, args.verbose, args.age, args.hobby)

現(xiàn)在,你可以通過多次指定--hobby來傳遞多個興趣愛好:

python hello.py Alice Smith -v -a 30 --hobby reading --hobby painting --hobby hiking

我們還可以進一步豐富命令行參數(shù)的處理,比如添加子命令功能和文件輸入輸出的支持。下面是一個包含子命令和從文件讀取參數(shù)的例子:???????

import argparse
import json
def greet(first_name, last_name, greeting='Hello', hobbies=None):
    if hobbies:
        hobby_message = f" and enjoy {', '.join(hobbies)}"
    else:
        hobby_message = ""
    print(f"{greeting}, {first_name} {last_name}{hobby_message}.")
def load_params_from_file(filename):
    try:
        with open(filename) as file:
            params = json.load(file)
            return params
    except FileNotFoundError:
        print(f"Error: The file '{filename}' does not exist.")
        sys.exit(1)
    except json.JSONDecodeError:
        print("Error: Unable to parse the provided file. Please ensure it contains valid JSON.")
        sys.exit(1)
def main():
    parser = argparse.ArgumentParser(description="Say hello to someone.")
 
    # 添加子命令功能
    subparsers = parser.add_subparsers(title="subcommands", dest="command")
    # 創(chuàng)建'greet'子命令解析器
    greet_parser = subparsers.add_parser('greet', help="Greet a person")
    greet_parser.add_argument('first_name', help='The person\'s first name')
    greet_parser.add_argument('last_name', help='The person\'s last name')
    greet_parser.add_argument('-g', '--greeting', default='Hello', help='The greeting message')
    greet_parser.add_argument('-H', '--hobby', action='append', help='A hobby of the person')
    # 創(chuàng)建'from-file'子命令解析器
    from_file_parser = subparsers.add_parser('from-file', help="Read parameters from a JSON file")
    from_file_parser.add_argument('filename', help='Path to the JSON file containing parameters')
    args = parser.parse_args()
    if args.command == 'greet':
        greet(args.first_name, args.last_name, args.greeting, args.hobby)
    elif args.command == 'from-file':
        params = load_params_from_file(args.filename)
        greet(params['first_name'], params['last_name'], params.get('greeting', 'Hello'), params.get('hobbies', []))
if 
name
 == "
__main__
":
    main()

現(xiàn)在,你可以通過greet子命令直接提供參數(shù),或者通過from-file子命令從JSON文件中讀取參數(shù):???????

# 使用'greet'子命令
python hello.py greet Alice Smith -g "Hi" --hobby reading --hobby writing
 
# 從JSON文件加載參數(shù)
python hello.py from-file parameters.json

其中,parameters.json的內(nèi)容可以是:???????

{
  "first_name": "Alice",
  "last_name": "Smith",
  "greeting": "Greetings!",
  "hobbies": ["reading", "writing"]
}

這樣,我們的Python腳本在命令行中的功能就變得更加豐富和靈活了。

我們還可以進一步增強命令行工具的功能,例如添加環(huán)境變量的支持以及處理不同類型的輸入輸出格式。以下是一個讀取環(huán)境變量和接受CSV文件作為輸入的示例:???????

import argparse
import csv
def process_data(data, greeting='Hello'):
    for first_name, last_name in data:
        print(f"{greeting}, {first_name} {last_name}!")
def main():
    parser = argparse.ArgumentParser(description="Say hello to a list of people from input.")
 
    # 添加從變量獲取默認(rèn)問候語
    default_greeting = 'Hello'
    parser.add_argument('-g', '--greeting', default=default_greeting, help='The greeting message (default: $default_greeting)')
    # 添加讀取CSV文件作為輸入?yún)?shù)
    parser.add_argument('input_file', type=argparse.FileType('r'), help='A CSV file containing names separated by commas')
    args = parser.parse_args()
    reader = csv.reader(args.input_file)
    data = [row for row in reader if len(row) == 2]  # 假設(shè)每行包含兩個字段:first_name 和 last_name
    process_data([tuple(row) for row in data], args.greeting)
if 
name
 == "
__main__
":
    main()

現(xiàn)在,這個腳本可以讀取環(huán)境變量DEFAULT_GREETING設(shè)置默認(rèn)的問候語,并通過命令行接收一個CSV文件路徑作為參數(shù)。CSV文件中的每一行應(yīng)包含兩個人名(用逗號分隔)。運行腳本時,它會依次對每一個人發(fā)出問候。

創(chuàng)建一個名為names.csv的文件,內(nèi)容如下:???????

Alice,Smith

Bob,Doe

Charlie,Wong

最后執(zhí)行腳本:

python hello.py names.csv

輸出結(jié)果將會是:???????

Hello, Alice Smith! 
Hello, Bob Doe! 
Hello, Charlie Wong!

這展示了如何在Python命令行工具中整合多種功能,包括環(huán)境變量、文件輸入以及數(shù)據(jù)處理等。

總結(jié)

到此這篇關(guān)于python命令行執(zhí)行方法及技巧分享的文章就介紹到這了,更多相關(guān)python命令行執(zhí)行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 分享一枚pycharm激活碼適用所有pycharm版本我的pycharm2020.2.3激活成功

    分享一枚pycharm激活碼適用所有pycharm版本我的pycharm2020.2.3激活成功

    這篇文章主要分享一枚pycharm激活碼適用所有pycharm版本我的pycharm2020.2.3激活成功,需要的朋友可以參考下
    2020-11-11
  • python使用xlsx和pandas處理Excel表格的操作步驟

    python使用xlsx和pandas處理Excel表格的操作步驟

    python的神器pandas庫就可以非常方便地處理excel,csv,矩陣,表格 等數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于python使用xlsx和pandas處理Excel表格的操作步驟,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • Tensorflow實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)用于人臉關(guān)鍵點識別

    Tensorflow實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)用于人臉關(guān)鍵點識別

    這篇文章主要介紹了Tensorflow實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)用于人臉關(guān)鍵點識別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Python實現(xiàn)字典序列ChainMap

    Python實現(xiàn)字典序列ChainMap

    容器數(shù)據(jù)類型包括數(shù)組list,字典dict以及元組tuple等。本篇主要介紹了ChainMap字典序列的使用,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • 關(guān)于windows下Tensorflow和pytorch安裝教程

    關(guān)于windows下Tensorflow和pytorch安裝教程

    Tensorflow是廣泛使用的實現(xiàn)機器學(xué)習(xí)以及其它涉及大量數(shù)學(xué)運算的算法庫之一。這篇文章主要介紹了Tensorflow和pytorch安裝(windows安裝),需要的朋友可以參考下
    2020-02-02
  • python實現(xiàn)對doc,txt,xls文檔的讀寫操作

    python實現(xiàn)對doc,txt,xls文檔的讀寫操作

    這篇文章主要介紹了python實現(xiàn)對doc,txt,xls文檔的讀寫操作,正如標(biāo)題所見,文章包括三個部分python實現(xiàn)對doc文檔的讀取、python實現(xiàn)對txt文檔的讀取和python實現(xiàn)對xls表格的讀取,需要的朋友可以參考一下
    2022-04-04
  • Python可視化程序調(diào)用流程解析

    Python可視化程序調(diào)用流程解析

    這篇文章主要為大家介紹了可視化Python程序調(diào)用流程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 基于Tensorflow使用CPU而不用GPU問題的解決

    基于Tensorflow使用CPU而不用GPU問題的解決

    今天小編就為大家分享一篇基于Tensorflow使用CPU而不用GPU問題的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 淺談Python 的枚舉 Enum

    淺談Python 的枚舉 Enum

    下面小編就為大家?guī)硪黄獪\談Python 的枚舉 Enum。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 深入理解Python中的真值和假值概念

    深入理解Python中的真值和假值概念

    在 Python 中,真值和假值是布爾類型的兩個唯一可能的值,本文將深入探討 Python 中的真值和假值概念,幫助你更好地理解和運用它們,感興趣的可以了解一下
    2023-11-11

最新評論