Tôi muốn có một số tùy chọn trong mô-đun argparse như --pm-export
tuy nhiên khi tôi cố gắng sử dụng nó như args.pm-export
Tôi nhận được lỗi không có thuộc tính pm
. Làm thế nào tôi có thể giải quyết vấn đề này? Có thể có -
trong các tùy chọn dòng lệnh không?Có các tùy chọn trong argparse với dấu gạch ngang
Trả lời
Như indicated in the argparse
docs:
Đối với những hành động đối số tùy chọn, giá trị của dest thường được suy ra từ các dây tùy chọn. ArgumentParser tạo giá trị của dest bằng cách lấy chuỗi tùy chọn dài đầu tiên và tước đi
--
chuỗiban đầu ban đầu. Bất kỳ nội-
nhân vật sẽ được chuyển đổi sang_
ký tự để đảm bảo chuỗi là một cái tên thuộc tính hợp lệ
Vì vậy, bạn nên sử dụng args.pm_export
.
Dấu gạch ngang được chuyển đổi thành dấu gạch dưới:
import argparse
pa = argparse.ArgumentParser()
pa.add_argument('--foo-bar')
args = pa.parse_args(['--foo-bar', '24'])
print args # Namespace(foo_bar='24')
Thật không may, dash-to-gạch thay thế không làm việc cho positionalarguments (không tiền tố bởi --
) như
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('logs-dir',
help='Directory with .log and .log.gz files')
parser.add_argument('results-csv', type=argparse.FileType('w'),
default=sys.stdout,
help='Output .csv filename')
args = parser.parse_args()
print args
# gives
# Namespace(logs-dir='./', results-csv=<open file 'lool.csv', mode 'w' at 0x9020650>)
Vì vậy, bạn nên sử dụng lập luận 1'st để add_argument()
như tên thuộc tính và metavar
kwarg để đặt chế độ hiển thị trong trợ giúp:
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('logs_dir', metavar='logs-dir',
nargs=1,
help='Directory with .log and .log.gz files')
parser.add_argument('results_csv', metavar='results-csv',
nargs=1,
type=argparse.FileType('w'),
default=sys.stdout,
help='Output .csv filename')
args = parser.parse_args()
print args
# gives
# Namespace(logs_dir=['./'], results_csv=[<open file 'lool.csv', mode 'w' at 0xb71385f8>])
Báo cáo lỗi Python có liên quan: http://bugs.python.org/issue15125. 'argparse' sử dụng' setattr' và 'getattr', vì vậy các tên' dest' không phải là các tên thuộc tính 'dot' hợp lệ. Người dùng cũng có thể sử dụng 'getattr'. – hpaulj
Tôi chỉ muốn 'positional_arg = getattr (parser, 'positional-arg')' –
Chính xác những gì tôi cần - tôi đã làm nó ngược với 'metavar' và không thể hiểu tại sao nó không hoạt động. Cảm ơn! – dwanderson
- 1. Python: argparse đối số tùy chọn mà không cần dấu gạch ngang
- 2. Python Mô-đun với một dấu gạch ngang, hoặc dấu gạch ngang (-) trong tên của nó
- 3. Dấu gạch ngang trong các mẫu jinja
- 4. Dấu gạch ngang vs Dash: Thay thế Dash với Dấu gạch ngang
- 5. Dấu gạch ngang tùy chỉnh trong chu trình matplotlib
- 6. Chuỗi định dạng có dấu gạch ngang
- 7. markdown - tôi có thể có dấu gạch dưới w/o thoát chúng và không có dấu gạch ngang đánh dấu?
- 8. Dấu gạch ngang là gì?
- 9. javascript - thay thế dấu gạch ngang (dấu gạch ngang) bằng dấu cách
- 10. Dấu gạch ngang trong các tên cột trong MySQL DB
- 11. git hai dấu gạch ngang có nghĩa là không có nhiều lựa chọn
- 12. RewriteRule^- [L] AKA RewriteRule dấu gạch ngang dấu gạch ngang L
- 13. Python, thay thế dấu gạch ngang dài bằng dấu gạch ngang ngắn?
- 14. Vấn đề với biểu tượng dấu gạch ngang trong powershell
- 15. Regex để phù hợp với ký tự chữ, dấu gạch dưới, dấu chấm và dấu gạch ngang, cho phép dấu chấm và dấu gạch ngang chỉ ở giữa
- 16. Cách di chuyển tập lệnh từ dấu gạch ngang sang dấu gạch ngang?
- 17. Regex - Dấu gạch ngang có nên được thoát không?
- 18. Làm cách nào để ngăn LaTeX khỏi các từ gạch nối có dấu gạch ngang?
- 19. Tại sao DisplayFormat có thay đổi DataFormatString "/" (dấu gạch chéo) thành "-" (dấu gạch ngang)?
- 20. Bạn có nên xóa dấu gạch ngang khỏi GUID không?
- 21. Dấu gạch ngang kép/Dấu gạch ngang trong SQL-Injection. Chúng nó được dùng cho cái gì?
- 22. Sử dụng chữ hoa, dấu gạch ngang hoặc dấu gạch dưới khi đặt tên cho bộ chọn css
- 23. subparser argparse tùy chọn (ví --version)
- 24. trạng thái ứng dụng với thông số tùy chọn và không có dấu gạch chéo
- 25. Thay thế dấu cách bằng dấu gạch ngang qua BASH
- 26. Python: phân tách trên dấu cách hoặc dấu gạch ngang?
- 27. git: Chỉ liệt kê các tệp được sửa đổi cho tất cả các dấu gạch ngang
- 28. ElasticSearch - Tìm kiếm bằng dấu gạch ngang trong tên
- 29. chấm: gạch ngang trong tên
- 30. dấu gạch ngang hai dấu chấm phẩy (;;) cú pháp
Chỉ dành cho đối số tùy chọn. Những người bắt buộc phải giữ dấu gạch ngang của họ, vì vậy yêu cầu dấu gạch dưới để làm cho chúng có thể truy cập được. – n00dle