簡體   English   中英

這個python腳本怎么了?

[英]What's wrong with this python script?

RAM=open('/root/arg2', 'r').read()
if RAM=="":
        try:
            if not sys.argv[2]=="":
                f = open("/root/arg2","a")
                f.write(sys.argv[2])
                f.close()   
    if float(RAM) > 4096:
        os.system("echo What the hell?")

上面的腳本怎么了? f.close()之后的行在編譯時始終會給出錯誤。 編譯錯誤:

riki137@riki137-K70IC:~/scripts$ python -m compileall *
Compiling thatscript.py ...
Sorry: IndentationError: ('unexpected unindent', ('thatscript.py', 20, 1, '\tif float(RAM) > 4096:\n'))

我嘗試了空格,不同的命令,新的空白行。 這些都沒有解決。

您需要try exceptfinally阻止。

如果您不想在發生異常的情況下執行任何操作,只需在其中添加pass

    try:
        if not sys.argv[2]=="":
            f = open("/root/arg2","a")
            f.write(sys.argv[2])
            f.close()
    except:
        pass

如果沒有此阻止,可能會導致您遇到的IndentationError

  try:
    foo = 1
    bar = 2
  baz = 3

  File "<pyshell#13>", line 5
    baz = 3
          ^
IndentationError: unindent does not match any outer indentation level

您必須在try塊后面加上catch或在同一選項卡級別上最終阻止

刪除try:語句,因為它沒有執行任何操作。

RAM=open('/root/arg2', 'r').read()
if RAM=="":
    if not sys.argv[2]=="":
        f = open("/root/arg2","a")
        f.write(sys.argv[2])
        f.close()   

其他人也已經說過這一點,但是我會警惕只使用一個空的except:塊,因為這可能會使您相信事情已經完成,而實際上卻失敗了。

同樣,您的下一條語句將失敗,就像RAM==""那么float(RAM)將引發ValueError 您的問題可能是縮進問題,但可能看起來像這樣:

if RAM=="":
    #Your sys.argv bit here
elif float(RAM) > 4096:
    os.system("echo What the hell?")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM