'While' question
Ben Keshet
keshet1 at umbc.edu
Fri Aug 22 18:49:10 EDT 2008
Wojtek Walczak wrote:
> On Fri, 22 Aug 2008 10:42:13 -0400, Ben Keshet wrote:
>
>> Thanks. I tried to use 'for' instead of 'while' as both of you
>> suggested. It's running well as my previous version but breaks
>> completely instead of just skipping the empty file. I suspect the
>> reason is that this part is inside another 'for' so it stops
>> everything. I just want to it to break only one 'for', that is go back
>> to 5th line in the example code (directory C has one empty file):
>>
>
>
>> for line in f:
>>
> ^^^
>
>> line = line.rstrip()
>> if "PRIMARY" not in line:
>> j += 1
>> if j == 20:
>> break
>> else:
>> for line in f:
>>
> ^^^
> You're iterating through the same value in inner and outer loop.
> Don't do that. It's hard to predict the behavior of such a code.
>
> Regarding break statement, it breaks only the inner loop
> and returns to the outer loop/block.
>
> It would be great if you could reduce your code to a short piece
> that illustrates your problem and that we could all run.
>
>
I ended up using another method as someone suggested to me. I am still
not sure why the previous version got stuck on empty files, while this
one doesn't:
receptors = ['A' 'B']
for x in receptors:
# open out_file for appending for each 'x' in receptors, close at
same level
out_file =
open('c:/Linux/Dock_method_validation/%s/validation/pockets.out' %(x),'a')
for i in range(10):
for r in (7, 9, 11, 13, 15, 17):
f =
open('c:/Linux/Dock_method_validation/%s/validation/ligand_ran_line_%s_%sA_secondary_scored.mol2'
%(x,i,r), 'r')
# assume 'PRIMARY' should be found first
# set flag for string 'PRIMARY'
primary = False
# iterate on file object, empty files will be skipped
for line in f:
if 'PRIMARY' in line:
primary = True
out_file.write(line.strip())
# copy scores
elif 'TRIPOS' not in line and primary:
out_file.write(line.strip())
out_file.write(' ')
elif 'TRIPOS' in line and primary:
break
print
out_file.write('\n')
f.close()
out_file.close()
More information about the Python-list
mailing list