忽略for循环中丢失的文件 - Python

vdo*_*man 3 python for-loop

我正在浏览一些文件,并在我的代码中划分它们的值.for循环用于解析文件类型的多次迭代(它只是更快).但是,有时,文件可能不存在.我如何跳过它并让for循环继续,因为某些文件编号可能因某种原因而不存在.

码:

import pyfits as pf

for i in range (1,18):
   img1= pf.getdata("galmasksciPHOTOf105w"+str(i)+".fits")
   img2= pf.getdata("fittedsciPHOTOf105w"+str(i)+".fits")
   img3=(img2)[2]
   newimg=img1/img3
   pf.writeto("dividedsciPHOTOf105w"+str(i)+".fits",newimg, clobber=True)

for i in range (1,18):
   img1= pf.getdata("galmasksciPHOTOf125w"+str(i)+".fits")
   img2= pf.getdata("fittedsciPHOTOf125w"+str(i)+".fits")
   img3=(img2)[2]
   newimg=img1/img3
   pf.writeto("dividedsciPHOTOf125w"+str(i)+".fits",newimg, clobber=True)

for i in range (1,22):
   img1= pf.getdata("galmasksciPHOTOf140w"+str(i)+".fits")
   img2= pf.getdata("fittedsciPHOTOf140w"+str(i)+".fits")
   img3=(img2)[2]
   newimg=img1/img3
   pf.writeto("dividedsciPHOTOf140w"+str(i)+".fits",newimg, clobber=True)

for i in range (1,22):
   img1= pf.getdata("galmasksciPHOTOf160w"+str(i)+".fits")
   img2= pf.getdata("fittedsciPHOTOf160w"+str(i)+".fits")
   img3=(img2)[2]
   newimg=img1/img3
   pf.writeto("dividedsciPHOTOf160w"+str(i)+".fits",newimg, clobber=True)
Run Code Online (Sandbox Code Playgroud)

因此,例如,fitssciPHOTOf125w4不存在,Python停止那里的代码.

zha*_*gyu 6

您可以先使用os.path.existsos.path.isfile测试文件是否存在.或者将您的阅读陈述放在一个try...except: pass块中.

for i in range (1,18):
   if os.path.isfile("galmasksciPHOTOf105w"+str(i)+".fits") and os.path.exists("fittedsciPHOTOf105w"+str(i)+".fits"):
       img1= pf.getdata("galmasksciPHOTOf105w"+str(i)+".fits")
       img2= pf.getdata("fittedsciPHOTOf105w"+str(i)+".fits")
       img3=(img2)[2]
       newimg=img1/img3
       pf.writeto("dividedsciPHOTOf105w"+str(i)+".fits",newimg, clobber=True)
Run Code Online (Sandbox Code Playgroud)

要么:

for i in range (1,18):
   try:
       img1= pf.getdata("galmasksciPHOTOf105w"+str(i)+".fits")
       img2= pf.getdata("fittedsciPHOTOf105w"+str(i)+".fits")
       img3=(img2)[2]
       newimg=img1/img3
       pf.writeto("dividedsciPHOTOf105w"+str(i)+".fits",newimg, clobber=True)
   except IOError:
       pass
Run Code Online (Sandbox Code Playgroud)

  • 这取决于.如果您丢失的文件很少,则第二个文件更快.如果经常这样,我认为第一个更好. (2认同)