我正在尝试在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
非常感谢任何帮助!
答案 0 :(得分:3)
该错误是因为opts.Input_Path
是None
,而不是您的路径字符串/ 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