argv
是一個列表,而不是一個字符串。你想
script = argv[0]
filename = argv[1]
考慮使用argparse
,而不是直接交給sys.argv
:
>>> import argparse
>>> parser = argparse.ArgumentParser(description="Print a file.")
>>> parser.add_argument("path", type=str, nargs=1, help="Path to the file to be printed.")
_StoreAction(option_strings=[], dest='path', nargs=1, const=None, default=None, type=<type 'str'>, choices=None, help='Path to the file to be printed.', metavar=None)
>>> args = parser.parse_args()
>>> print args
Namespace(path=[<...>])
它看起來要複雜得多,但它會使你的命令行工具更靈活,更容易擴展,它將確保您在命令行上獲得正確的文檔。
爲什麼要在把一個模式的習慣嗎?默認參數的一點是,它並不總是必要的。 – katrielalex 2010-12-15 21:18:52
因爲我不得不尋找如果模式是可選的,那麼默認情況下價值是。這意味着閱讀此代碼的任何人都必須這樣做。哪個不好。 – Falmarri 2010-12-15 21:21:04
還添加二進制或文本模式標誌。它在Windows上有所不同。而在Python中,它*總是*有所作爲,因此放入其中。 – 2010-12-15 21:24:44