2016-02-18 42 views
-1

我已經用Python編寫的一段代碼,當我讓它運行我得到以下信息:語法錯誤:無效的語法後鑄造的字符串爲int

File "port.py", line 229 
    port = (int) a 
       ^
SyntaxError: invalid syntax 

因爲代碼是有點太長,我得到以下部分只重要的部分:

try: 
     opts, args = getopt.getopt(sys.argv[1:], 'hle:t:p:cu:', 
            ['help','listen','execute', 'target', 
            'port', 'command', 'upload']) 
    except getopt.GetoptError as err: 
     print(str(err)) 
     usage() 

    for o,a in opts: 
     if o in ('-h', '--help'): 
      usage() 
     elif o in ('-l','--listen'): 
      listen = True 
     elif o in ('-e', '--execute'): 
      execute = a 
     elif o in ('-c','--commandshell'): 
      command = True 
     elif o in ('-u','--upload'): 
      upload_destination = a 
     elif o in ('-t','--target'): 
      target = a 
     elif o in ('-p','--port'): 
      port = (int) a 
     else: 
      assert False,'Unhandled Option' 

所以,一個應該是具有字符串類型的端口號。所以,我認爲我應該施展它。

python的版本是2.7.3。

我找不出錯誤信息出現的原因。我希望有人能幫忙。

最好的問候,

+0

Python是不是C. – chepner

+0

是的,我在python新。有什麼辦法可以將其轉換嗎? – user3097712

+0

除非您正在將使用'getopt'的現有代碼移植到Python(甚至可能),否則應該使用'argparse'。 – chepner

回答

2

從字符串a創建一個新的int對象,使用

port = int(a) 
+0

當我這樣做,然後我得到相同的消息。 – user3097712

+1

然後你做錯了什麼。如果你的代碼是'port = int(a)',你不能在錯誤信息中得到''port =(int)a「'。 – Matthias

+0

啊,好的......現在我明白了。好的,thx。在我讀過的文檔中,它和你寫的一樣。因爲通常我用C編寫我的代碼,所以我改變了偏執的位置。所以,謝謝。 – user3097712