01/10/2018, 09:45
Hỏi về argv trong Python 2.7
- Mình rất mong được anh em giải đáp vấn đề này. Chẳng là mình bắt đầu học python với tập Learn Python on The Hard Way. Đến bài 13 tham số và biến, trong đó có sử dụng tham số argv, ví dụ:
from sys import argv script, first, second, third = argv print "The script is called:", script print "Your first variable is:", first print "Your second variable is:", second print "Your third variable is:", third
-
Lưu với tên là ex13.py và chạy:
-
Điều mình không hiểu ở đây là khi chuyền tham số, cái tên của script (ex13.py) cũng được chuyền vào argv và hiển thị ra. Vậy có cách nào để loại bỏ cái đó và chỉ chuyển những gì mình đã nhập vào được không? Và như thế nào ạ?
Bài liên quan
thêm cái đó sau
from sys import argv
đồng liên giải thích kĩ hơn được không :)) ví dụ như pop ở đây nghĩa là gì? tìm ở đâu có được không?
ghi import như vậy thì tất cả cái mà bạn đưa vào nó sẽ đưa vào một list
bạn có thể kiểm tra bằng cách
print(argv)
Như bạn thấy đó là một list. Thì mình dùng
argv.pop(0)
có nghĩa là bỏ phần tử đầu tiên ra. Phần tử đầu tiên luôn luôn là tên của scriptBình thường mình hay dùng là
argv[1:]
, nó sẽ trả về các giá trị index = 1 về sau.Chào đồng chí.
Mình hôm nay cũng mới học tới bài 13 này, cũng lăn tăn i chang bạn í.
Chả hiểu sao mà mình
from sys import argv one, two, three, four, five = argv print "Hello", one print "hello", two print "hello", three print "hello", four print "hello", five
-> Terminal python ~/filename 1 2 3 4 (thì nó chạy) (mà 1 2 3 4 5 thì nó bảo nhiều quá)
Nhưng mà cái hàng đầu tiên lúc nào cũng là tên của scrip (tính ra cái đó là tên file để thực thi mà nó cũng tính là 1 giá trị nên cứ ngồi ngĩ mãi số 5 của mình sao lại không add được trong khi
argv
mình add tới 5 lận)khi bạn truyền vào
filename 1 2 3 4
thì sẽ có tổng cộng là 5 cái được truyền vào gồm tên file và 4 số kia nữa. Do đóargv = [filename, 1, 2, 3, 4]
5 phần tửThế nên ở dòng dưới bạn mới
one, two, three, four, five
5 cái luôn. Bằng nhaunếu bạn truyền 1 2 3 4 5 thì cái
argv = [filename, 1, 2, 3, 4, 5]
6 cái mà trong code bạn chỉ có 5Do đó muốn có 6 cái bạn phải cho thêm một cái nữa là
six
thì may raGiải thích giùm mình nguyên cái cụm này với, mình còn hơi mơ hồ
script, first, second, third = argv
bạn hãy thử
print(argv)
sẽ rõ. Ví dụ nếu bạn chạy file python.py như saupython python.py 1, 2, 3
thì bạn đã gán tiếp tạo một listargv = ['python.py', 1, 2, 3]
Do đó khi gán: nó giống như là
a, b = [1, 2]
thìa = 1, b = 2
do đóscript, first, second, third = argv
tường minh ra là
script, first, second, third = ['python.py', 1, 2, 3]
script = 'python.py' first = 1 second = 2 third = 3
@graktung mình hiểu rồi, thanks nhá
À ra là thế, nó đã bó thằng scrip đi rồi nè.
Mình thử thì khi thực thi nó bắt mình phải thêm số 5 nữa mới chạy
from sys import argv argv.pop(0)
Đã hiểu rồi, cảm ơn bạn nhiều
pop()
nó sẽ trả ra giá trị bịpop
thế nên khi bạnpop(0)
thì là bạn đang bỏ giá trị đầu tiên ra. Do đó bạn in thì sẽ thấy cái mà bạn bỏ đi.Bạn thử thêm một dòng ở dưới là
print(argv)
đi