Python OptParse

时间:2011-09-21 17:44:46

标签: python

我正在尝试在python中使用optparser输入路径。不幸的是,这段代码一直显示错误。

import optparse,os

parser = optparse.OptionParser()
parser.add_option("-p","--path", help = "Prints path",dest = "Input_Path", metavar = "PATH")

(opts,args) =parser.parse_args()

print os.path.isdir(opts.Input_Path)

错误: -

Traceback (most recent call last):
  File "/Users/armed/Documents/Python_Test.py", line 8, in 
    print os.path.isdir(opts.Input_Path)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/genericpath.py", line 41, in isdir
    st = os.stat(s)
TypeError: coercing to Unicode: need string or buffer, NoneType found

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

该错误是因为opts.Input_PathNone,而不是您的路径字符串/ unicode。

您确定要正确调用脚本吗?在任何情况下你都应该输入一些错误检查代码,以确保如果用户放-p,程序不会崩溃。

或者,将其更改为位置参数,使其通过optparse“必需”: http://docs.python.org/library/optparse.html#what-are-positional-arguments-for

修改:对于您可能想要使用argparse的新项目,也不推荐使用optparse

答案 1 :(得分:2)

我复制了你的脚本然后运行它。看起来你以错误的方式调用你的脚本:

 $ python test.py /tmp
 Traceback (most recent call last):
   File "test.py", line 8, in <module>
     print os.path.isdir(opts.Input_Path)
   File "/usr/lib/python2.6/genericpath.py", line 41, in isdir
     st = os.stat(s)
 TypeError: coercing to Unicode: need string or buffer, NoneType found

$ python test.py --path /tmp
True