18
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Làm thế nào để chạy một con trăn với các đối số sẽ chứa khoảng trống? Tôi đang sử dụng macOS
Ví dụ,
>python testProgram.py argument 1 argument 2
Trường hợp "Đối số 1" là một đối số duy nhất?
Hỏi ngày 10 tháng 8 năm 2012 lúc 2:51Aug 10, 2012 at 2:51
0
trong đó "Đối số 1" là một đối số duy nhất.
Về cơ bản, bạn đã trả lời câu hỏi của riêng bạn ở đó,
python testProgram.py "argument 1" 'argument 2'
4 thực sự là một đối số duy nhất.Nói cách khác, bạn cần trích dẫn nó, một cái gì đó giống như một trong số:
python testProgram.py "argument 1" 'argument 2'
Đây thực sự không phải là vấn đề Python, tuy nhiên, nó phụ thuộc vào vỏ mà bạn đang sử dụng để chạy tập lệnh Python.
Ví dụ, với
python testProgram.py "argument 1" 'argument 2'
5, có sự khác biệt giữa các trích dẫn đơn và đôi, trong đó quan trọng nhất có lẽ là các bản mở rộng khác nhau như python testProgram.py "argument 1" 'argument 2'
6 - biến thể được trích dẫn đơn không thực hiện các bản mở rộng đó.Đã trả lời ngày 10 tháng 8 năm 2012 lúc 2:56Aug 10, 2012 at 2:56
Paxdiablopaxdiablopaxdiablo
828K227 Huy hiệu vàng1550 Huy hiệu bạc1918 Huy hiệu đồng227 gold badges1550 silver badges1918 bronze badges
3
Kèm theo các tham số của bạn có chứa khoảng trắng có dấu ngoặc kép
> python testProgram.py "argument 1" "argument 2"
Điều này sẽ hoạt động trong Windows và Linux vì vậy rất có thể nó cũng sẽ ổn trong Mac OS.
Đã trả lời ngày 10 tháng 8 năm 2012 lúc 2:54Aug 10, 2012 at 2:54
LevonlevonLevon
Huy hiệu vàng 133K3333 gold badges198 silver badges187 bronze badges
Hoặc sử dụng
python testProgram.py "argument 1" 'argument 2'
7 từ bên trong Python:subprocess.call[['python','testProgram.py','argument 1','argument 2']]
Nhưng các câu trả lời khác có nhiều khả năng là những gì bạn muốn.
Đã trả lời ngày 10 tháng 8 năm 2012 lúc 3:04Aug 10, 2012 at 3:04
Mgilsonmgilsonmgilson
289K60 Huy hiệu vàng607 Huy hiệu bạc676 Huy hiệu Đồng60 gold badges607 silver badges676 bronze badges
Try:
>python testProgram.py "argument 1" "argument 2"
Đã trả lời ngày 10 tháng 8 năm 2012 lúc 2:53Aug 10, 2012 at 2:53
ChipjustchipjustChipJust
1.36812 Huy hiệu bạc20 Huy hiệu đồng12 silver badges20 bronze badges
Tôi gặp khó khăn trong việc truyền một số biến chuỗi có khoảng trống trong đó làm đối số cho một chương trình. Để gỡ lỗi và hiển thị các đối số được thông qua, tôi đã tạo một tập lệnh python demo -:
For debugging and showing the arguments being passed, I created a demo Python script -:
##### show_args.py #####
import sys
def main[]:
# Display the arguments passed to the script
print "Number of arguments =", len[sys.argv]
for arg in sys.argv:
print arg
if __name__ == '__main__':
main[]
Bây giờ, tập lệnh thể hiện vấn đề -:
path_with_spaces="$HOME/blah blah"
arg_list="$path_with_spaces/abc $path_with_spaces/xyz"
python show_args.py $arg_list
Đầu ra -:
Number of arguments = 5
show_args.py
/home/anmol/blah
blah/abc
/home/anmol/blah
blah/xyz
Điều tôi thực sự muốn là thế này -:
path_with_spaces="$HOME/blah blah"
python show_args.py "$path_with_spaces/abc" "$path_with_spaces/xyz"
Đầu ra -:
Number of arguments = 3
show_args.py
/home/anmol/blah blah/abc
/home/anmol/blah blah/xyz
Điều tôi thực sự muốn là thế này -:
python testProgram.py "argument 1" 'argument 2'
0Đầu ra -:
python testProgram.py "argument 1" 'argument 2'
1Điều tôi thực sự muốn là thế này -:
The script showing this new approach -:
python testProgram.py "argument 1" 'argument 2'
2Đầu ra -:
Number of arguments = 3
show_args.py
/home/anmol/blah blah/abc
/home/anmol/blah blah/xyz
Điều tôi thực sự muốn là thế này -:I still want to know if there is a way with which we can accomplish the same thing using a string variable rather an array variable.
Để xác nhận rằng vấn đề chỉ xảy ra đối với các đường dẫn có khoảng trắng trong đó, tôi đã tạo tập lệnh sau -:
- Trong khi tìm kiếm các giải pháp cho vấn đề này, tôi đã gặp phải câu trả lời này, theo đó cách chính xác là đặt các đối số vào một biến mảng thay vì biến chuỗi. Kịch bản hiển thị cách tiếp cận mới này -:
- Mặc dù, giải pháp này đang hoạt động chính xác, tôi vẫn muốn biết liệu có cách nào chúng ta có thể hoàn thành điều tương tự bằng cách sử dụng biến chuỗi thay vì biến mảng.
- Cấu hình hệ thống của tôi -: