osx python - как мне декодировать sys.argv? - PullRequest
1 голос
/ 20 января 2012

Я не думаю, что я даже использую прикольные символы - просто пытаюсь передать "-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?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 20 января 2012

Каким-то образом вы вводите не дефис, а действительный символ тире (опция -), Unicode 8211, чье представление UTF-8 представляет собой трехбайтовую строку \xe2\x80\x93. Мы всегда называем символ, который предшествует параметрам командной строки, «тире», но это действительно дефис!

1 голос
/ 20 января 2012

Вы копируете это?Я только что взял первые две черты от

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 или чего-то еще?Повторите это, и все будет хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...