Hướng dẫn python sys argv example - ví dụ về python sys argv

Cách sử dụng sys.argv trong python.

Cách sử dụng sys.argv trong python.

sys.argv là môt danh sách [list] trong python, nó được sư dụng khi bạn chạy một lệnh command-line nào đó trên hệ thống. Và argument này được đẩy vào script python để thực thi khi chạy câu lệnh.
Và argument này được đẩy vào script python để thực thi khi chạy câu lệnh.

Ví dụ: python sys.argv arg1 arg2

Trước tiên bạn phải import mô đun sys trong script.

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)

Tên của script này : sysargv.py Số lượng arg là : 1 Arg là : ['sysargv.py']
Số lượng arg là : 1
Arg là : ['sysargv.py']

python test1020.py 111
This is the name of the script:  test1020.py Number of arguments:  2 The arguments are:  ['test1020.py', '111']
Number of arguments:  2
The arguments are:  ['test1020.py', '111']

Bài đăng phổ biến từ blog này

Medium.com là trang web có những bài viết về IT, phần mềm và công nghệ nói chung rất phổ biến và chất lượng.  Nhưng khoảng 1 tuần nay không vào được bằng cả mạng viettel và 4G của Mobi phone.  Dân It thường tham khảo các bài viết trên trang này. Nhiều bài viết hay và chất lượng. là một cơ sở dữ liệu lớn cho dân IT nhưng đã bị chặn.  Các bài viết này thường thì có tính quy chuẩn và dài hơn, các topic có chất lượng hơn so với stackoverflow.  Nhưng các subdomain thì vẫn truy cập được như:  https://about.medium.com Bạn có thể tham khảo lý do vì sao medium.com bị chặn ở Việt nam. tại trang tinh tế:  Nói chung mình không thích điều này.  https://tinhte.vn/thread/website-medium-khong-truy-cap-duoc-la-do-website-chet-hay-chan-ip-viet-nam-nhi.3231608/

Như ta đã biết github là nới chứa source code nổi tiếng thế giới hiện nay, ngoài github còn có gitlab, bitbucket, codecommit, ... Cơ bản github miễn phí cho người dùng developer, nếu nhu cầu sử dụng nhiều repo cũng như project có nhiều thanh viên developer tham gia thì bạn có thể mua bản nâng cao.  Về tiến trình CI/CD process, chúng ta có thể biết tới như Jenkins, Team City, Codepipeline trên AWS, ...  GitHub Actions mới ra đời gần đây , ngày 13 tháng 11 năm 2019, GitHub Actions ra phiên bản đầu tiên, trước đó khoảng 1 năm bản beta ra đời.  Tham khảo tại đây : https://github.blog/2019-08-08-github-actions-now-supports-ci-cd/ GitHub Actions khá đơn giản, khi tiến trình build, test và deploy được viết trong một file có định dạng yaml nằm trong thư mục .github/workflows/ trong chính source code của bạn.  GitHub Actions là một event-driven nghĩa là chương trình chạy một loạt các dòng lệnh khi bạn nhận được 1 event, ví dụ mỗi lần một developer nào đó tạo một pull request cho một repositor

Tôi muốn lưu ý rằng các câu trả lời trước đây đưa ra nhiều giả định về kiến ​​thức của người dùng. Câu trả lời này cố gắng trả lời câu hỏi ở cấp độ hướng dẫn nhiều hơn.

Đối với mọi lệnh gọi Python, sys.argvtự động là một danh sách các chuỗi đại diện cho các đối số (được phân tách bằng dấu cách) trên dòng lệnh. Tên này xuất phát từ quy ước lập trình C, trong đó argv và argc đại diện cho các đối số dòng lệnh.

Bạn sẽ muốn tìm hiểu thêm về danh sách và chuỗi khi bạn đang làm quen với Python, nhưng trong thời gian chờ đợi, đây là một vài điều cần biết.

Bạn có thể chỉ cần tạo một tập lệnh in các đối số khi chúng được biểu diễn. Nó cũng in ra số lượng đối số, sử dụng lenhàm trên danh sách.

from __future__ import print_function
import sys
print(sys.argv, len(sys.argv))

Tập lệnh yêu cầu Python 2.6 trở lên. Nếu bạn gọi tập lệnh này print_args.py, bạn có thể gọi nó với các đối số khác nhau để xem điều gì xảy ra.

> python print_args.py
['print_args.py'] 1

> python print_args.py foo and bar
['print_args.py', 'foo', 'and', 'bar'] 4

> python print_args.py "foo and bar"
['print_args.py', 'foo and bar'] 2

> python print_args.py "foo and bar" and baz
['print_args.py', 'foo and bar', 'and', 'baz'] 4

Như bạn có thể thấy, các đối số dòng lệnh bao gồm tên tập lệnh nhưng không bao gồm tên trình thông dịch. Theo nghĩa này, Python coi tập lệnh là tệp thực thi. Nếu bạn cần biết tên của tệp thực thi (trong trường hợp này là python), bạn có thể sử dụng

from __future__ import print_function
import sys
print(sys.argv, len(sys.argv))
0.

Bạn có thể thấy từ các ví dụ rằng có thể nhận các đối số có chứa khoảng trắng nếu người dùng gọi tập lệnh với các đối số được đóng gói trong dấu ngoặc kép, vì vậy những gì bạn nhận được là danh sách các đối số do người dùng cung cấp.

Bây giờ trong mã Python của bạn, bạn có thể sử dụng danh sách các chuỗi này làm đầu vào cho chương trình của mình. Vì danh sách được lập chỉ mục bởi các số nguyên dựa trên 0, bạn có thể lấy các mục riêng lẻ bằng cách sử dụng cú pháp danh sách [0]. Ví dụ, để lấy tên tập lệnh:

script_name = sys.argv[0] # this will always work.

Mặc dù thú vị nhưng bạn hiếm khi cần biết tên tập lệnh của mình. Để nhận đối số đầu tiên sau tập lệnh cho tên tệp, bạn có thể làm như sau:

filename = sys.argv[1]

Đây là cách sử dụng rất phổ biến, nhưng lưu ý rằng nó sẽ không thành công với IndexError nếu không có đối số nào được cung cấp.

Ngoài ra, Python cho phép bạn tham chiếu một phần của danh sách, vì vậy, để có được một danh sách khác chỉ gồm các đối số do người dùng cung cấp (nhưng không có tên tập lệnh), bạn có thể làm

user_args = sys.argv[1:] # get everything after the script name

Ngoài ra, Python cho phép bạn gán một chuỗi các mục (bao gồm cả danh sách) cho các tên biến. Vì vậy, nếu bạn mong đợi người dùng luôn cung cấp hai đối số, bạn có thể gán các đối số đó (dưới dạng chuỗi) cho hai biến:

user_args = sys.argv[1:]
fun, games = user_args # len(user_args) had better be 2

Vì vậy, để trả lời câu hỏi cụ thể của bạn,

from __future__ import print_function
import sys
print(sys.argv, len(sys.argv))
1đại diện cho đối số dòng lệnh đầu tiên (dưới dạng a
from __future__ import print_function
import sys
print(sys.argv, len(sys.argv))
2) được cung cấp cho tập lệnh được đề cập. Nó sẽ không nhắc nhập, nhưng nó sẽ không thành công với IndexError nếu không có đối số nào được cung cấp trên dòng lệnh theo sau tên tập lệnh.

359 hữu ích 5 bình luận chia sẻ 5 bình luận chia sẻ