我认为我甚至不会使用时髦的角色 - 只是试图传入“-d”,但我的冲刺似乎已经被淹没了。如果我只是打印sys.argv [1]它看起来没问题,但如果我打印整个列表sys.argv,我可以看到时髦的字符而不是我的破折号。 Mac OSX 10.6.8 Python 2.6.1
#!/usr/bin/env python
import sys
if __name__ == "__main__":
try:
print "SVH FLAG sys.argv ",sys.argv
num_args = len(sys.argv)
for i in range(0,num_args):
print "SVH FLAG sys.argv[",i,"] ",sys.argv[i]
except:
print "problem with sys.argv"
当我用-d调用它时,这给了我这个: ./deleteme.py -d /Library/Python/2.6/site-packages
SVH FLAG sys.argv ['./deleteme.py', '\xe2\x80\x93d', '/Library/Python/2.6/site-packages']
SVH FLAG sys.argv[ 0 ] ./deleteme.py
SVH FLAG sys.argv[ 1 ] –d
SVH FLAG sys.argv[ 2 ] /Library/Python/2.6/site-packages
第一行输出上的那个时髦的字符串似乎真的搞乱了像optparse这样的东西,它看不到我的破折号。
我需要告诉sys给我一个正常的argv吗?
提前致谢!
答案 0 :(得分:2)
不知何故,你没有输入一个连字符,而是一个实际的短划线字符(选项 - ),Unicode 8211,其UTF-8表示是三字节字符串\xe2\x80\x93
。我们总是将命令行选项之前的字符称为“破折号”,但它实际上是一个连字符!
答案 1 :(得分:1)
你复制粘贴吗?我刚刚从
中取出前两个破折号 Which gives me this when I call it with -d: ./deleteme.py –d /Library/Python/2.6/site-packages
python
Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> '–'
'\xe2\x80\x93'
>>> '-'
'-'
>>>
这是来自单词doc或pdf还是其他什么?重新输入它,你应该没事。