仅在Windows上存在python参数解析问题

仅在Windows上存在python参数解析问题,python,windows,python-2.7,arguments,argparse,Python,Windows,Python 2.7,Arguments,Argparse,当我尝试将CSV导入MonetDB数据库时,它在我的mac上运行良好(Anaconda发行版中的Python 2.7.6),但它在Windows 2012 Server(Anaconda中的Python 2.7.5)上引发了一个错误:参数太少 我认为除了--database之外,所有的标志都应该是可选的,另外你需要指定一个文件名——这在我的mac电脑上完全有效,而不是在Windows上 修复这个错误的方法是什么?这是Windows的已知问题吗 或者如果我应该在文件名中转义\字符,为什么Pytho

当我尝试将CSV导入MonetDB数据库时,它在我的mac上运行良好(Anaconda发行版中的Python 2.7.6),但它在Windows 2012 Server(Anaconda中的Python 2.7.5)上引发了一个
错误:参数太少

我认为除了
--database
之外,所有的标志都应该是可选的,另外你需要指定一个文件名——这在我的mac电脑上完全有效,而不是在Windows上

修复这个错误的方法是什么?这是Windows的已知问题吗

或者如果我应该在文件名中转义
\
字符,为什么Python不抱怨文件不存在,为什么抱怨参数太少?(在任何情况下,当我在Windows批处理文件中指定文件时,我都无法轻松地在那里转义
\
。)

为了方便起见,我重复脚本的参数分析部分:

parser = argparse.ArgumentParser(description='A "smarter" CSV loader for MonetDB, v.0.3, hannes@cwi.nl, 2014-05')
parser.add_argument('--database', help='Database name to connect to', default='')
parser.add_argument('--port', help='MonetDB TCP port, defaults to 50000', default='50000')
parser.add_argument('--user', help='MonetDB username, defaults to "monetdb"', default='monetdb')
parser.add_argument('--password', help='MonetDB password, defaults to "monetdb"', default='monetdb')
parser.add_argument('--header',action='store_true', help='set if given CSV file has a header in the first line')
parser.add_argument('--yes',action='store_true', help='if set, assume Yes on all questions')
parser.add_argument('files', nargs='+', help='One or many CSV files to be imported')

args = parser.parse_args()

对于Python来说,Windows安装是不完整的,将它放在路径中是不够的。如果在命令行上正确地键入
python importer.py
,而不仅仅是
importer.py
,问题就会得到解决。另请参见以下答案:


奇怪的是,解析问题是一个危险信号,但事实就是如此。

正如在另一个SO线程中所建议的,我会打印
sys.argv
以查看
argparse
必须处理什么。默认情况下,它解析sys.argv[1://code>。如果该值为空,
argparse
将给出错误,因为它找不到用于
文件的值。