2012-08-10 27 views

Trả lời

8

trong đó "đối số 1" là một đối số duy nhất.

Bạn đã trả lời câu hỏi riêng của mình ở đó, "argument 1" thực sự là một đối số duy nhất.

Nói cách khác, bạn cần phải trích dẫn nó, một cái gì đó như một trong số:

python testProgram.py "argument 1" 'argument 2' 

Đây không phải là thực sự là một vấn đề Python tuy nhiên, nó phụ thuộc vào vỏ mà bạn đang sử dụng để chạy Python kịch bản. Ví dụ, với bash, có sự khác biệt giữa dấu ngoặc đơn và dấu ngoặc kép, quan trọng nhất trong số đó có lẽ là các mở rộng khác nhau như $HOME - biến thể được trích dẫn duy nhất không làm những mở rộng đó.

+0

Nếu tôi có sth như: RAW_PATH = "/ Volumes/TOSHIBA EXT /../" và tôi muốn sử dụng $ RAW_PATH làm đối số? Điều này không hiệu quả với tôi. – thigi

+0

@thigi: bạn sẽ sử dụng '" $ {RAW_PATH} "' - biến chỉ hoạt động tốt trong dấu ngoặc kép. – paxdiablo

+0

Ok cảm ơn bạn! Xin lỗi vì đã không thử điều đó, nhưng tôi nghĩ điều đó sẽ không hiệu quả và do đó tôi không thử! Xin lỗi vì sự bất tiện này... – thigi

1

Hãy thử:

>python testProgram.py "argument 1" "argument 2" 
2

Kèm theo thông số của bạn có chứa khoảng trắng với dấu ngoặc kép

> python testProgram.py "argument 1" "argument 2" 

này sẽ làm việc trong môi trường Windows và Linux nên rất có thể là nó sẽ được ok dưới Mac OS quá.

1

Hoặc sử dụng subprocess từ bên trong python bản thân:

subprocess.call(['python','testProgram.py','argument 1','argument 2']) 

Nhưng câu trả lời khác có nhiều khả năng trở thành những gì bạn muốn.