Làm thế nào để bạn chuyển tên tệp làm đối số trong python?

Đối số Dòng lệnh là một cách quản lý tập lệnh hoặc chương trình bên ngoài bằng cách cung cấp tên tập lệnh và tham số đầu vào từ các tùy chọn dòng lệnh trong khi thực thi tập lệnh. Đối số dòng lệnh không chỉ dành riêng cho lập trình Python. Chúng có thể được tìm thấy trong các ngôn ngữ lập trình khác như C, C# (C sharp), C++, PHP, Java, Perl, Ruby và Shell scripting. Đối số và tham số được sử dụng rộng rãi và khóa học thực hành về khoa học dữ liệu với Python sẽ giúp bạn hiểu cách sử dụng đối số dòng lệnh và các khái niệm hữu ích khác, chẳng hạn như markdown là gì, v.v.   

Đừng quên kiểm tra việc sử dụng Self trong Python

Mô-đun sys là một trong những mô-đun phổ biến và được sử dụng thường xuyên trong Python. Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách sử dụng mô-đun python sys argv. Chúng ta sẽ tìm hiểu về những gì argv[0] và sys. argv[1] là gì và cách chúng hoạt động. Sau đó, chúng ta sẽ đi vào cách phân tích các đối số và tùy chọn Dòng lệnh, các cách khác nhau để sử dụng sys argv và cách truyền đối số dòng lệnh trong Python 3. x

Hiểu hệ thống. argv có ví dụ

hệ thống. argv là một danh sách trong Python chứa tất cả các đối số dòng lệnh được chuyển đến tập lệnh. Nó rất cần thiết trong Python khi làm việc với các đối số Dòng lệnh. Chúng ta hãy xem xét kỹ hơn với ví dụ python sys argv bên dưới.  

Với ống kính (sys. argv), bạn có thể đếm số đối số.  

import sys
print ("Number of arguments:", len(sys.argv), "arguments")
print ("Argument List:", str(sys.argv))
$ python test.py arg1 arg2 arg3
Number of arguments: 4 arguments.
Argument List: ['test.py', 'arg1', 'arg2', 'arg3']

Tên mô-đun sẽ được sử dụng khi sử dụng sys. argv

Để sử dụng hệ thống. argv, trước tiên bạn cần đến mô-đun sys.  

 argv[0] là gì?

Hãy nhớ rằng hệ thống. argv[0] là tên của tập lệnh.  

Ở đây - Tên tập lệnh là sys argv. py

import sys
print ("This is the name of the script: ", sys.argv[0])
print ("Number of arguments: ", len(sys.argv))
print ("The arguments are: " , str(sys.argv))

đầu ra

This is the name of the script:  sysargv.py                                                                              
Number of arguments:  1                                                                                                
The arguments are:  ['sysargv.py']

"sys là gì. argv [1]"? Nó hoạt động như thế nào?

Khi một tập lệnh python được thực thi với các đối số, nó sẽ được Python nắm bắt và lưu trữ trong một danh sách có tên là sys. argv.  

Vì vậy, nếu đoạn script dưới đây được thực thi.  

python sample.py Hello Python 

Sau đó bên trong mẫu. py, các đối số được lưu trữ dưới dạng.  

  • hệ thống. argv[0] == 'mẫu. py'
  • hệ thống. argv[1] == ‘Xin chào’
  • hệ thống. argv[2] == ‘Trăn’

Đây, sys. argv[0] luôn là tên tệp/tập lệnh được thực thi và sys. argv[1] là đối số dòng lệnh đầu tiên được chuyển đến tập lệnh

Phân tích cú pháp các tùy chọn và đối số của Dòng lệnh

Python cung cấp một mô-đun có tên là getopt giúp phân tích các đối số và tùy chọn dòng lệnh. Nó cung cấp một chức năng – getopt, được sử dụng để phân tích chuỗi đối số. hệ thống. argv

Dưới đây là cú pháp.  

getopt.getopt(argv, shortopts, longopts=[]) 
  • argv. danh sách đối số được thông qua
  • thiếu sót. Chuỗi các tùy chọn ngắn dưới dạng danh sách. Các tùy chọn trong các đối số phải được theo sau bởi dấu hai chấm (. )
  • longopts. Chuỗi tùy chọn dài như danh sách. Các tùy chọn trong các đối số phải được theo sau bởi dấu bằng (=).  
import getopt
import sys
 
first =""
last =""
argv = sys.argv[1:]
try:
    options, args = getopt.getopt(argv, "f:l:",
                               ["first =",
                                "last ="])
except:
    print("Error Message ")
 
for name, value in options:
    if name in ['-f', '--first']:
        first = value
    elif name in ['-l', '--last']:
        last = value
 
print(first + " " + last)

đầu ra

(venv) C:\Users\Nandank\PycharmProjects\DSA\venv>python getopt_ex.py -f Knowledge -l Hut
Knowledge Hut
(venv) C:\Users\Nandank\PycharmProjects\DSA\venv>python getopt_ex.py --first Knowledge –last Hut
Knowledge Hut

Đối số dòng lệnh là gì?

Đối số dòng lệnh là các tham số trong Python được chuyển đến chương trình/tập lệnh khi chạy. Chúng cung cấp thông tin bổ sung cho chương trình để nó có thể thực thi

Nó cho phép chúng tôi cung cấp các đầu vào khác nhau trong thời gian chạy mà không cần thay đổi mã.  

Đây là một tập lệnh có tên là argparse_ex. py.  

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-n", "--name", required=True)
args = parser.parse_args()
print(f'Hi {args.name} , Welcome ')

Ở đây chúng ta cần nhập gói argparse

Sau đó, chúng ta cần khởi tạo đối tượng ArgumentParser dưới dạng trình phân tích cú pháp. Sau đó, trong dòng tiếp theo, chúng tôi thêm đối số duy nhất, --name. Chúng ta phải chỉ định phiên bản viết tắt (-n) hoặc phiên bản viết tay (--name)  trong đó một trong hai cờ có thể được sử dụng trong dòng lệnh như minh họa ở trên. Đây là một đối số bắt buộc như được đề cập bởi required=True

đầu ra.   

________số 8

Ví dụ trên phải có tùy chọn--nameor –n, nếu không sẽ bị lỗi

(venv) C:\Users\Nandank\PycharmProjects\DSA\venv>python argparse_ex.py --name  
usage: argparse_ex.py [-h] --name NAME
argparse_ex.py: error: the following arguments are required: --name

Truyền đối số dòng lệnh trong Python 3. x

Dưới đây là những điểm bạn cần lưu ý khi thực hiện chuyển py

  • argv đại diện cho một mảng có các đối số dòng lệnh của thescript.  
  • Hãy nhớ rằng ở đây, việc đếm bắt đầu từ số không [0], không phải một (1).  
  • Để sử dụng, trước tiên chúng ta cần nhập mô-đun sys (nhập sys).  
  • Đối số đầu tiên, sys. argv[0], luôn là tên của script và sys. argv[1] là đối số đầu tiên được chuyển đến tập lệnh.  

Ở đây, chúng ta cần cắt danh sách để truy cập tất cả các đối số dòng lệnh thực tế.  

import sys
print ("This is the name of the script: ", sys.argv[0])
print ("Number of arguments: ", len(sys.argv))
print ("The arguments are: " , str(sys.argv))
0

đầu ra

import sys
print ("This is the name of the script: ", sys.argv[0])
print ("Number of arguments: ", len(sys.argv))
print ("The arguments are: " , str(sys.argv))
1

Tập lệnh bên dưới - password_gen. py được sử dụng để tạo mật khẩu bí mật bằng cách lấy độ dài mật khẩu làm đối số dòng lệnh

import sys
print ("This is the name of the script: ", sys.argv[0])
print ("Number of arguments: ", len(sys.argv))
print ("The arguments are: " , str(sys.argv))
2

đầu ra

import sys
print ("This is the name of the script: ", sys.argv[0])
print ("Number of arguments: ", len(sys.argv))
print ("The arguments are: " , str(sys.argv))
3

điểm chính

Hãy để chúng tôi tóm tắt những gì chúng tôi đã học được cho đến nay. Chúng ta đã thấy cách sử dụng mô-đun sys trong Python, chúng ta đã xem xét gì areagv[0] và sys. argv[1] là gì và cách chúng hoạt động, đối số Dòng lệnh là gì và tại sao chúng tôi sử dụng chúng cũng như cách phân tích các tùy chọn và đối số Dòng lệnh. Chúng tôi cũng đã đi sâu vào nhiều cách để sử dụng argv và cách truyền đối số dòng lệnh trong Python 3. x

Hy vọng hướng dẫn nhỏ này hữu ích trong việc giải thích cách sử dụng sys. argv và cách nó hoạt động trong Python. Hãy nhớ xem KnowledgeHut khoa học dữ liệu ứng dụng với chuyên môn về python và đừng quên thực hành mã của bạn.  

câu hỏi thường gặp

1. Làm cách nào để sử dụng SYS argv trong tập lệnh Python?

Để sử dụng, hệ thống. argv trong tập lệnh Python, chúng ta cần nhập mô-đun sys vào tập lệnh. Giống như chúng tôi nhập tất cả các mô-đun, "nhập sys" thực hiện công việc. Lý tưởng nhất là chúng tôi muốn điều này ở đầu tập lệnh, nhưng ở bất kỳ đâu trước khi chúng tôi sử dụng sys. chức năng argv vẫn hoạt động

2. Kiểu dữ liệu của các phần tử của SYS argv là gì?

Các thành phần của hệ thống. argv là một danh sách Python, tất cả các đối số dòng lệnh được truyền vào nó theo đúng thứ tự

3. Đối số dòng lệnh trong Python là gì?

Đối số dòng lệnh là đối số được truyền vào tập lệnh Python thông qua cửa sổ đầu cuối. Chúng tôi thường áp dụng chúng khi đang thực thi tập lệnh, với mỗi đối số được phân tách bằng dấu cách