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

การเขียนโปรแกรมส่วนต่อประสานบรรทัดคำสั่งใน Python?


ในส่วนนี้ เราจะพัฒนาส่วนต่อประสานบรรทัดคำสั่งโดยใช้ python แต่ก่อนจะลงลึกในโปรแกรม เรามาทำความเข้าใจบรรทัดคำสั่งกันก่อน

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

ในขณะที่อินเทอร์เฟซบรรทัดคำสั่งมีอินเทอร์เฟซผู้ใช้ที่นำทางโดยการพิมพ์คำสั่งที่เทอร์มินัล เชลล์ หรือคอนโซล แทนการใช้เมาส์

อินเทอร์เฟซบรรทัดคำสั่ง (CLI) เริ่มต้นด้วยไฟล์เรียกทำงาน มีพารามิเตอร์ที่เราสามารถส่งผ่านไปยังสคริปต์ได้ขึ้นอยู่กับวิธีการพัฒนา เช่น:

  • ข้อโต้แย้ง :เราจำเป็นต้องจัดเตรียมพารามิเตอร์นี้ที่ส่งผ่านไปยังสคริปต์ ในกรณีที่เราไม่ได้จัดเตรียมไว้ CLI จะผ่านข้อผิดพลาด ตัวอย่างเช่น numpy เป็นอาร์กิวเมนต์ในคำสั่งนี้:pip installnumpy

  • ตัวเลือก :พารามิเตอร์ทางเลือกที่มาพร้อมกับชื่อและคู่ค่า เช่น:pip install django –cache-dir ./my-cache-dir โดยที่ –cache_dir เป็นพารามิเตอร์ตัวเลือก และค่า ./my-cache-dir ควรใช้เป็น ไดเรกทอรีแคช

  • ธง :พารามิเตอร์ทางเลือกอื่นที่บอกให้สคริปต์เปิดหรือปิดการทำงานบางอย่าง เช่น พารามิเตอร์ –help

Python มีแพ็คเกจ python หลายตัวเพื่อเขียนอินเตอร์เฟสบรรทัดคำสั่งเช่น 'คลิก' คลิกช่วยให้เราสร้างอินเทอร์เฟซบรรทัดคำสั่งด้วยโค้ดเพียงไม่กี่บรรทัด

ด้านล่างนี้เป็นโปรแกรมอินเตอร์เฟสบรรทัดคำสั่งโดยไม่ต้องใช้แพ็คเกจการคลิก การเขียนโปรแกรม CLI อาจไม่สวยงามเท่าโปรแกรมที่เราใช้ 'คลิก' เนื่องจาก 'คลิก' ช่วยให้คุณปฏิบัติตามหลักการ “อย่าทำซ้ำตัวเอง” (DRY)

อินเตอร์เฟสบรรทัดคำสั่งโดยไม่ต้องใช้แพ็คเกจการคลิก

import sys
import random

def do_work():
   """ Function to handle command line usage"""
   args = sys.argv
   args = args[1:] # First element of args is the file name

   if len(args) == 0:
      print('You have not passed any commands in!')
   else:
      for a in args:
         if a == '--help':
            print('Basic command line program')
            print('Options:')
            print(' --help -> show this basic help menu.')
            print(' --monty -> show a Monty Python quote.')
            print(' --veg -> show a random vegetable')
         elif a == '--monty':
            print('He’s not the Messiah—he’s a very naughty boy')
         elif a == '--veg':
            print(random.choice(['Tomato','Reddis','Carrot', 'Potato', 'Turnip']))
         else:
            print('Unrecognised argument.')

if __name__ == '__main__':
do_work()

ผลลัพธ์

c:\Python\Python361>python cli_interp1.py --monty
He’s not the Messiah—he’s a very naughty boy

c:\Python\Python361>python cli_interp1.py --help
Basic command line program
Options:
--help -> show this basic help menu.
--monty -> show a Monty Python quote.
--veg -> show a random vegetable

c:\Python\Python361>python cli_interp1.py --veg
Tomato

c:\Python\Python361>python cli_interp1.py --error
Unrecognised argument.

ดังที่คุณเห็นในโปรแกรมด้านบน การเปลี่ยนชื่ออาร์กิวเมนต์ไม่ได้ให้ความยืดหยุ่นมากนัก

ด้านล่างนี้เป็นโปรแกรมเดียวกันที่ใช้ python click package เพื่อใช้งาน CLI

import click
import random

@click.command()
@click.option('--monty', default=False, help='Show a Monty Python quote.')
@click.option('--veg', default=False, help='Show a random vegetable.')
def do_work(monty, veg):
""" Basic Click example will follow your commands"""
if monty:
   print('He’s not the Messiah—he’s a very naughty boy')
   if veg:
      print(random.choice(['Tomato','Reddis','Carrot', 'Potato', 'Turnip']))
if __name__ == '__main__':
do_work()

ผลลัพธ์

c:\Python\Python361>python cli_interp2.py --help
Usage: cli_interp2.py [OPTIONS]

Basic Click example will follow your commands

Options:
--monty TEXT Show a Monty Python quote.
--veg TEXT Show a random vegetable.
--help Show this message and exit.

โปรแกรมด้านบนแสดงให้เห็นว่าเขียน CLI ได้ง่ายกว่ามากโดยใช้แพ็คเกจ 'คลิก' และประหยัดความพยายามของโปรแกรมเมอร์ได้มาก