Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

บรรทัดคำสั่งและอาร์กิวเมนต์ตัวแปรใน Python?


อาร์กิวเมนต์บรรทัดคำสั่ง

อาร์กิวเมนต์บรรทัดคำสั่งคือพารามิเตอร์อินพุตที่อนุญาตให้ผู้ใช้เปิดใช้งานโปรแกรมเพื่อดำเนินการในลักษณะบางอย่าง เช่น เพื่อส่งออกข้อมูลเพิ่มเติม หรืออ่านข้อมูลจากแหล่งที่ระบุ หรือเพื่อตีความข้อมูลในรูปแบบที่ต้องการ

อาร์กิวเมนต์บรรทัดคำสั่ง Python

Python มีตัวเลือกมากมายในการอ่านอาร์กิวเมนต์บรรทัดคำสั่ง วิธีที่พบบ่อยที่สุดคือ -

  • Python sys.argv
  • โมดูล Python getopt
  • โมดูล Python argparse

โมดูล Python sys

โมดูล sys เก็บอาร์กิวเมนต์บรรทัดคำสั่ง (CLA) ไว้ในรายการและเพื่อเรียกค้น เราใช้ sys.argv เป็นวิธีง่ายๆ ในการอ่านอาร์กิวเมนต์บรรทัดคำสั่งเป็นสตริง

import sys

print(type(sys.argv))
print('The command line arguments are: ')
for i in sys.argv:
print(i)

โปรแกรมที่ทำงานอยู่เหนือโปรแกรมหนึ่ง ผลลัพธ์ของเราจะเป็นดังนี้ -

ผลลัพธ์

>python CommandLineOption.py H E L L O
<class 'list'>
The command line arguments are:
CommandLineOption.py
H
E
L
L
O

โมดูล Python getopt

โมดูล python getopt แยกวิเคราะห์ลำดับอาร์กิวเมนต์ เช่น sys.argv และส่งคืนลำดับของตัวเลือก &คู่อาร์กิวเมนต์ และลำดับของอาร์กิวเมนต์ที่ไม่ใช่ตัวเลือก

ไวยากรณ์

getopt.getopt(args, options, [long_options])

ที่ไหน:

  • อาร์กิวเมนต์ – รายการอาร์กิวเมนต์ที่จะแยกวิเคราะห์

  • ตัวเลือก – นี่คือสตริงของตัวอักษรตัวเลือกที่สคริปต์ต้องการจดจำ

  • Long_options – อันนี้เป็นพารามิเตอร์ทางเลือก เป็นรายการสตริงที่มีชื่อของตัวเลือกแบบยาว ซึ่งควรรองรับ

ไวยากรณ์ตัวเลือกโมดูล getopt ประกอบด้วย -

  • -a
  • -bval
  • -b วาล
  • --noarg
  • --witharg=val
  • --witharg วาล

มาทำความเข้าใจโมดูล getopt ผ่านตัวอย่างกัน -

ตัวเลือกแบบสั้น

โปรแกรมด้านล่างมีสองตัวเลือก -a และ –b โดยมีตัวเลือกที่สองที่ต้องการอาร์กิวเมนต์

import getopt
print (getopt.getopt(['-a', '-bval', '-c', 'val'], 'ab:c:'))

ผลลัพธ์

([('-a', ''), ('-b', 'val'), ('-c', 'val')], [])

ตัวเลือกแบบยาว

โปรแกรมมีสองตัวเลือก --noarg และ –witharg และลำดับควรเป็น ['noarg', 'witharg=']

import getopt
print (getopt.getopt([ '--noarg', '--witharg', 'val', '--witharg2=another' ],'',[ 'noarg', 'witharg=', 'witharg2=' ]))

ผลลัพธ์

([('--noarg', ''), ('--witharg', 'val'), ('--witharg2',
'another')], [])

อีกตัวอย่างหนึ่งเพื่อสาธิตการใช้งานโมดูล geopt -

import getopt
import sys
argv = sys.argv[1:]
try:
opts, args = getopt.getopt(argv, 'hm:d', ['help', 'my_file='])
print(opts)
print(args)
except getopt.GetoptError:
print('Something Wrong!')
sys.exit(2)

ผลลัพธ์

>python CommandLineOption.py -m 2 -h "Help" H E L L O
[('-m', '2'), ('-h', '')]
['Help', 'H', 'E', 'L', 'L', 'O']

โมดูล Python argparse

โมดูล Python argparse เป็นวิธีที่ต้องการในการแยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่ง โมดูลนี้มีตัวเลือกหลายอย่าง เช่น อาร์กิวเมนต์ตำแหน่ง ค่าเริ่มต้นสำหรับอาร์กิวเมนต์ ข้อความช่วยเหลือ การระบุประเภทข้อมูลของอาร์กิวเมนต์ เป็นต้น

ด้านล่างนี้เป็นโปรแกรมง่ายๆ ในการทำความเข้าใจโมดูล argparse -

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("string", help="Print the word in upper case letters")
args = parser.parse_args()
print(args.string.upper()) # This way argument can be manipulated.

ผลลัพธ์

>python CommandLineOption.py "Hello, pythoN"
HELLO, PYTHON

เราสามารถตั้งค่าอาร์กิวเมนต์เสริมด้วยโมดูล argparse เช่น –verbosity