3
我必須寫一個程序使用此命令行:什麼方式,我必須指定argparse.FileType追加,保持 - 作爲默認
demo.py [-h] -f FILENAME [-o]
的文件名是強制性的,意味着該文件中,我們可以追加至。 -o標誌表示該文件將被覆蓋。
這argparse代碼幾乎工作:
import argparse
parser = argparse.ArgumentParser(description='A foo that bars')
parser.add_argument("-f",
"--file", dest="filename", required=True,
type=argparse.FileType('a+'),
help="The output file (append mode, see --overwrite).")
parser.add_argument("-o",
"--overwrite", dest="overwrite",
action='store_true',
help="Will overwrite the filename if it exists")
args = parser.parse_args()
if args.overwrite:
args.filename.truncate(0)
print >> args.filename, 'Hello, World!'
但是,如果我指定-
(標準輸出)作爲文件名,我得到這個錯誤:
error: argument -f/--file: invalid FileType('a+') value: '-'
我試圖a
或r+
,我得到的同樣的錯誤。我在Windows上使用Python 2.7,但它也必須在Linux上工作。對於傳統支持,命令行不能更改。
我怎樣才能保持內置支持stdout速記,但支持覆蓋功能?