4

在我的脚本中,我有一个大的 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来说非常新……所以希望这不是一个简单的错误:(

4

3 回答 3

7

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

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
于 2013-03-28T15:40:09.567 回答
6

试试这样

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:
   some_code
except:
   pass
于 2013-03-28T15:39:52.590 回答
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模块而不是使用os.system().

于 2013-03-28T16:07:02.330 回答