2013-08-07 28 views
11

Tôi đang sử dụng argparse.ArgumentParser() trong tập lệnh của mình, tôi muốn hiển thị mô tả pydoc của tập lệnh của tôi như một phần của tùy chọn '--help' của argparse.Hiển thị mô tả của pydoc như một phần của argparse '--help'

Một khả năng giải pháp có thể được sử dụng formatter_class hoặc description thuộc tính của ArgumentParser để cấu hình hiển thị giúp đỡ. Nhưng trong trường hợp này, chúng ta cần sử dụng lệnh 'pydoc' trong nội bộ để tìm nạp mô tả.

Chúng tôi có một số cách khác (có thể là thanh lịch) để làm điều đó không?

+0

yaa, '__doc__' là đủ cho tôi. Cảm ơn ! Có cách nào khác thay vì sử dụng 'formatter_class/description'? – baky

Trả lời

20

Bạn có thể truy xuất chuỗi tài liệu của tập lệnh từ __doc__ toàn cầu. Để thêm nó vào trợ giúp của tập lệnh, bạn có thể đặt đối số description của trình phân tích cú pháp.

"""My python script 

Script to process a file 
""" 

p = argparse.ArgumentParser(description=__doc__, 
          formatter_class=argparse.RawDescriptionHelpFormatter) 
p.add_argument('foo', help="Name of file to process") 
p.parse_args() 

Sau đó, sự giúp đỡ sẽ trông giống như:

$ python tmp.py --help 
usage: tmp.py [-h] foo 

My python script 

Script to process a file 

positional arguments: 
    foo   Name of file to process 

optional arguments: 
    -h, --help show this help message and exit 

Bạn có thể sử dụng đối số epilog từ khóa thay vì description để di chuyển docstring đến hết sự giúp đỡ, thay vì ngay sau khi chuỗi sử dụng.

+3

Nếu anh ta có một chuỗi tài liệu nhiều dòng, mô tả sẽ hợp nhất nó thành một dòng. Tốt hơn nên sử dụng 'ArgumentParser (usage = __ doc __)' –

+0

Ồ, đúng vậy. Bạn sẽ cần phải đặt 'formatter_class = argparse.RawDescriptionHelpFormatter' để duy trì định dạng. Tôi sợ tôi chỉ đang sao chép những thứ anh ta đã thử, bây giờ. – chepner

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