为什么argparse不接受参数并打印出新的“魔法”用法?

时间:2018-01-26 09:22:34

标签: python-3.x unit-testing argparse

我使用argparse编写了一个小python脚本来处理命令行选项。 它已经有效,直到它突然表现得非常奇怪。 现在它有时拒绝我的论点并给我打印不同的用法。 我使用python3.4在Windows 8.1上运行它 任何人都知道什么可以造成这样的问题?

parser = argparse.ArgumentParser(description="Encodes or decodes a file or folder.")
parser.add_argument("-e", "--encode", action="store_true", help="Specify mode: encode")
parser.add_argument("-d", "--decode", action="store_true", help="Specify mode: decode")
parser.add_argument("-p", "--password", action="store", metavar="password", help="Specify password.")
parser.add_argument("-f", "--file", help="Specify file/folder.")
parser.add_argument("-t", "--test", action="store_true", help="Runs unittests.")
args = vars(parser.parse_args())

Consolelog

更新

如果-t执行了以下代码:

testMode = args["test"]
#...
if (testMode):
    unittest.main()#this produced the error
    input("Press Enter to leave")
    exit()

解决方案:

testMode = args["test"]
#...
if (testMode):
    unittest.main(argv=[sys.argv[0]])
    input("Press Enter to leave")
    exit()

1 个答案:

答案 0 :(得分:1)

如果是-t,则开始进行单元测试:

unittest.main()

这产生了新的用法消息,因为它也使用了argv 修复它使用

unittest.main(argv=[sys.argv[0]])