2011-02-02 26 views
8

Tôi đã tải xuống một tệp python xxxxxx.py mà được cho là chạy trên dòng lệnh bằng cách gõ : python xxxxxx.py filename1 filename2 và cần thực hiện hai tệp này làm đối số.Chuyển đối số dòng lệnh cho chương trình Python bằng IDLE?

Tôi đã tự hỏi nếu có một cách tôi có thể sử dụng IDLE để vượt qua trong các đối số này. Có cách nào khác ngoài cài đặt sys.argv không?

Cảm ơn

+5

Tôi không hiểu tại sao mọi người cứ cho rằng IDLE là thứ hữu ích. –

+0

Xin vui lòng, bạn có thể cho tôi đề xuất về một IDE mà bạn nghĩ là hữu ích cho các cửa sổ. Tôi sẽ đánh giá cao rằng –

+0

Bạn không vượt qua đối số trong IDLE tại thời gian chạy. Thật dễ dàng để chỉ cần gõ lệnh của bạn tại dòng lệnh. Điều gì khiến bạn không bị ràng buộc 'python xxxxxx.py filename1 filename2' tại dòng lệnh? Hoặc sao chép và dán nó tại dòng lệnh? Hoặc sử dụng mũi tên lên để gõ lại vào dòng lệnh? –

Trả lời

4

Bạn có thể làm điều này từ dòng lệnh với:

idle.py -r scriptname.py đặt các tham số ở đây

Bạn có thể thử một IDE khác nhau như ActivePython

Hoặc bạn có thể vá IDLE :

http://bugs.python.org/issue5680

+0

nếu tôi đang ở trên cửa sổ. con đường của tôi bây giờ là C: \ Python26 ... etc \ idlelib vì vậy tôi có thể chạy nhàn rỗi. Nhưng kịch bản ở đâu đó khác và vì vậy nó không thể tìm thấy nó, tôi nên làm gì? –

+0

Không bao giờ nhớ! Tôi vừa thêm C: \ Python26 \ Lib \ idlelib vào đường dẫn trong Cài đặt hệ thống nâng cao –

+1

Chỉ cần sửa đổi sys.argv trong mã của bạn. Ví dụ 'sys.argv = ['scriptname.py', 'arg1', 'arg2', 'arg3']' – SomeGuyOnAComputer

6

Tùy thuộc vào nội dung của tệp Python của bạn. Nếu nó được tốt bằng văn bản, như:

#! /usr/bin/env python 

def process(files): 
    for file in files: 
     # ... 

if __name__ == '__main__' 
    # some error checking on sys.argv 
    process(sys.argv[1:]) 
    sys.exit(0) 

Sau đó, bạn có thể chỉ đơn giản là nhập các file python và chạy nó thích:

import name_of_file 

# ... 
     name_of_file.process([file1, file2, file3]) 
# ... 

Vì vậy, nó thực sự phụ thuộc vào cách nó được viết. Nếu nó không được viết tốt nhưng bạn có thể chỉnh sửa nó, tôi sẽ cấu trúc lại nó để nó có thể được sử dụng như một thư viện; nếu không, tôi sẽ sử dụng mô-đun subprocess để gọi chương trình.

+1

Tôi chỉ muốn vượt qua đối số về thời gian chạy khi tôi chạy tập lệnh python. Có cách nào làm được việc này không? –

Các vấn đề liên quan