Cha*_*d D -2 python crash loops file
所以我的问题是,当其中一个代码无法在服务器中找到该文件时,我的代码会崩溃.有没有办法在找不到文件时跳过查找过程并继续循环.这是我的代码如下:
fname = '/Volumes/database/interpro/data/'+uniprotID+'.txt' 
for index, (start, end) in enumerate(searchPFAM(fname)):
        with open('output_'+uniprotID+'-%s.txt' % index,'w') as fileinput:
            print start, end
            for item in lookup[uniprotID]:
                item, start, end = map(int, (item, start, end)) #make sure that all value is int
                if start <= item <= end:
                    print item
                    result = str(item - start)
                    fileinput.write(">{0} | at position {1} \n".format(uniprotID, result))
                    fileinput.write(''.join(makeList[start-1:end]))
                    break
            else:
                    fileinput.write(">{0} | N/A\n".format(uniprotID))
                    fileinput.write(''.join(makeList[start-1:end]))
fname = '/Volumes/database/interpro/data/'+uniprotID+'.txt' 
for index, (start, end) in enumerate(searchPFAM(fname)):
        with open('output_'+uniprotID+'-%s.txt' % index,'w') as fileinput:
            print start, end
            for item in lookup[uniprotID]:
                item, start, end = map(int, (item, start, end)) #make sure that all value is int
                if start <= item <= end:
                    print item
                    result = str(item - start)
                    fileinput.write(">{0} | at position {1} \n".format(uniprotID, result))
                    fileinput.write(''.join(makeList[start-1:end]))
                    break
            else:
                    fileinput.write(">{0} | N/A\n".format(uniprotID))
                    fileinput.write(''.join(makeList[start-1:end]))
Run Code Online (Sandbox Code Playgroud)
Jon*_*art 11
您需要使用try/ exceptblock 处理异常.请参阅Python文档以处理异常.
在这种情况下,您必须使用包装open()调用(以及该with块中的所有内容)try,并使用以下命令捕获异常except IOError:
for ...
    try:
        with open(...
           # do stuff
    except IOError:
        # what to do if file not found, or pass
附加信息
你真正应该做的是将外环的主体拉for成一个函数.或者也许with是处理打开文件的函数的主体.无论哪种方式,减少嵌套使事情更具可读性,并且更容易进行这样的更改,添加try/ except.
实际上,看起来你在外for循环的每次迭代中重新打开文件,但文件名永远不会改变 - 你总是重新打开同一个文件.这是故意的吗?如果没有,你可能想重新思考你的逻辑,并将其移到循环之外.
第三个想法,你得到的例外是什么?是不是找不到IOError的文件?因为你正在打开write('w')文件,所以我不确定为什么你会得到那个例外.