python try语句的语法无效

时间:2013-03-28 15:39:01

标签: python

在我的脚本中,我有一个大的while:try:loop。在这个内部,我想增加一些指针,以便从我的相机成功下载图片并调整大小,这是我的代码在我更大的python脚本中的样子:

import os.path
try os.path.isfile('/home/pi/CompPictures' + picturenumber + '.JPG'):
    os.system('sudo rm /home/pi/Pictures/IMG_0001.JPG')
    os.system('sudo rm /home/pi/output.bin')
    picturenumber = int(picturenumber))+1
except:
    pass

picturenumber包含一个字符串'1'开始然后会增加。

我只想要这个运行一个。所以基本上我不断地运行我的大代码,然后每次扫描更大的循环,我想检查一次这个try语句,如果文件存在,删除一些文件并增加指针。

我收到以下错误。

  File "pijob.py", line 210
    try os.path.isfile('/home/pi/CompPictures' + picturenumber + '.JPG'):
         ^
SyntaxError: invalid syntax

对python来说非常新...所以希望这不是一个简单的错误:(

3 个答案:

答案 0 :(得分:6)

您需要一个新行和一个:。试试这个:

try:
    os.path.isfile('/home/pi/CompPictures' + picturenumber + '.JPG') #
    os.system('sudo rm /home/pi/Pictures/IMG_0001.JPG')
    os.system('sudo rm /home/pi/output.bin')
    picturenumber = int(picturenumber))+1
except:
    pass

无论结果如何,您都可以包含finally语句来执行代码:

try:
    #code
except:
    pass
finally:
    #this code will execute whether an exception was thrown or not

答案 1 :(得分:5)

尝试这样,

import os.path
try :
    os.path.isfile('/home/pi/CompPictures' + picturenumber + '.JPG') #
    os.system('sudo rm /home/pi/Pictures/IMG_0001.JPG')
    os.system('sudo rm /home/pi/output.bin')
    picturenumber = int(picturenumber))+1
except:
    pass

python try语法,

try:
   some_code
except:
   pass

答案 2 :(得分:1)

Python中try / except的语法是

try:
    # code that might raise the exception
    pass
except <exceptions go here>:
    # code that should happen when the
    # specified exception is/exceptions are
    # raised
    pass
except <other exceptions go here>:
    # different code that should happen when
    # the specified exception is/exceptions
    # are raised
    pass
else:
    # code that follows the code that 
    # might raise the exception, but should
    # only execute when the exception isn't
    # raised
    pass
finally:
    # code that will happen whether or not
    # an exception was raised
    pass

一些一般准则:

  • 除非您真的希望您的代码以静默方式处理所有异常,否则请捕获特定的异常。这将使您能够更好地处理出错的任何事情。
  • 当使用多个except块时,将具有更多特定异常的块放在更高的位置(即,确保子类异常出现在它们的基础之前)。具有匹配异常的第一个块将获胜。
  • try下放置尽可能少的代码。任何可以引发您期望的异常的代码都属于try;任何只有在没有引发异常时才应执行的代码应该放在else内。这样,如果它引发了异常,你就不会发现它不会被压扁。

另外,您可能需要查看subprocess module而不是os.system()