Tôi đồng ý với ý tưởng sử dụng một tập tin cấu hình S. Lott, nhưng tôi khuyên bạn nên sử dụng các module tích hợp ConfigParser (configparser trong 3.0) để phân tích nó, chứ không phải là một giải pháp nhà ủ.
Dưới đây là một tập lệnh ngắn minh họa cho ConfigParser và optparse đang hoạt động.
import ConfigParser
from optparse import OptionParser
CONFIG_FILENAME = 'defaults.cfg'
def main():
config = ConfigParser.ConfigParser()
config.read(CONFIG_FILENAME)
parser = OptionParser()
parser.add_option("-l",
"--language",
dest="language",
help="The UI language",
default=config.get("Localization", "language"))
parser.add_option("-f",
"--flag",
dest="flag",
help="The country flag",
default=config.get("Localization", "flag"))
print parser.parse_args()
if __name__ == "__main__":
main()
Output:
(<Values at 0x2182c88: {'flag': 'japan.png', 'language': 'Japanese'}>, [])
Run với "parser.py --language=French
":.
(<Values at 0x2215c60: {'flag': 'japan.png', 'language': 'French'}>, [])
Giúp được xây dựng trong Run với" parser.py --help
":
Usage: parser.py [options]
Options:
-h, --help show this help message and exit
-l LANGUAGE, --language=LANGUAGE
The UI language
-f FLAG, --flag=FLAG The country flag
Các tập tin cấu hình:
[Localization]
language=Japanese
flag=japan.png
Nguồn
2009-12-10 12:23:42
Không có lý do gì để sử dụng eval tại đây - bạn chỉ có thể sử dụng nguyên soái. –
@Nick Bastin: Đánh giá không phải là Ác ma, chỉ có những người dùng cuối sociopathic người luôn cố gắng để hack ứng dụng bằng cách khai thác việc sử dụng eval. –
Đưa ngón tay của bạn vào kẻ tấn công lợi dụng chink trong áo giáp của bạn, không loại bỏ chink hay ngừng cuộc tấn công ... :) –