2017-12-17 7 views
1

私はoptsで作業しようとしていますが、引数が常に空であるため他のPCで動作するようにはできません。以下は私のコードです。Python opts empyの値を取得

import getopt 
import sys 

try: 
    print getopt.getopt(sys.argv[1:], "f::c::") 
    opts, args = getopt.getopt(sys.argv[1:], "f::c::") 
except getopt.GetoptError, err: 
    # print help information and exit: 
    print str(err) # will print something like "option -a not recognized" 
    sys.exit(2) 

print opts 
print args 

funcion = None 
tipo = None 

for opt, arg in opts: 
    if opt in ('-f'): 
     funcion = arg 
    if opt in ('-c'): 
     tipo = arg 

print funcion 
print tipo 

使用試験:

python test.py –f import_dbs –c 1 

PC結果:

([('-f', 'imports'), ('-c', '1')], []) 
[('-f', 'imports'), ('-c', '1')] 
[] 
imports 
1 

PCのBの結果:

([], ['\x96f', 'import_dbs', '\x96c', '1']) 
[] 
['\x96f', 'import_dbs', '\x96c', '1'] 
None 
None 
+0

"PC A"と "PC B"とは何ですか? –

+0

PC B.は、PCのシンプルなハイフンの代わりにユニコードダッシュを表示しています。 – ShpielMeister

答えて

1

問題はあなたのコードではなく、あなたのcliコマンドにあります。あなたはおそらくカット&ペーストや奇妙なキーボードマッピングによって引き起こされる代わりにハイフン

$ python test.py –f import_dbs –c 1 
None 
None 
$ python test.py -f import_dbs –c 1 
import_dbs 
None 
$ python test.py -f import_dbs -c 1 
import_dbs 
1 
$ echo "python test.py –f import_dbs –c 1" | od -c 
0000000 p y t h o n  t e s t . p y  – 
0000020 ** ** f  i m p o r t _ d b s  – 
0000040 ** ** c  1 \n           
0000046 
$ echo "python test.py -f import_dbs -c 1" | od -c 
0000000 p y t h o n  t e s t . p y  - 
0000020 f  i m p o r t _ d b s  - c  
0000040 1 \n               
0000042 

のダッシュ(またはUnicodeのいくつかの並べ替えを)持っています。

+0

ありがとう!私はConEmuコンソールを使用しています。私はWindowsのcmdを使ってテストします。 – giovannivl

+0

良い役に立った場合は、私の答えに間違いがないかどうか自由に記入してください。 – ShpielMeister

関連する問題