[英]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
except
或finally
阻止。
如果您不想在發生異常的情況下執行任何操作,只需在其中添加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.