943,514 Members | Top Members by Rank

Ad:
  • Python Discussion Thread
  • Unsolved
  • Views: 538
  • Python RSS
Aug 10th, 2009
0

Need help with a looping problem

Expand Post »
Hi,
I'm trying to run a batch of commands from a .txt file using python. ("cmd.batch.txt" = ~1000 command lines :
perl cmd.1.pl -in -parameters)

and redirect renamed output files to new folders. It works fine for the first line, but I'm having trouble getting something to loop through all of the commands in "cmd.batch.txt".

Any help would be much appreciated !
-M

import os

f=open("cmd.batch.txt")
while True:
x=f.readlines()
y=x[0][10:30]
w=y.split(" ")
os.system(x[0])
for fn in os.listdir("."):
if fn[-5:] == "ML.dS":
os.rename(fn, "./dS/"+ w[1] +"ML.dS")
if fn[-5:] == "NG.dS":
os.rename(fn, "./dS/"+ w[1] + "NG.dS")
if not x: break
x.next()
Similar Threads
Reputation Points: 7
Solved Threads: 0
Newbie Poster
miac09 is offline Offline
12 posts
since Aug 2009
Aug 10th, 2009
0

Re: Need help with a looping problem

There are two problems

while True:
x=f.readlines()
You read the entire file on every loop, so you willl always get the first rec of the newly read list.

if not x: break
x.next()
This may exit if you have any blank lines in the file.

Instead, you want to loop through all of the records with a for() loop
Python Syntax (Toggle Plain Text)
  1. input_list=open("cmd.batch.txt").readlines()
  2. for rec in input_list:
  3. print rec
  4. if len( rec.strip() ) < 1:
  5. print " that rec was an empty line"
Reputation Points: 741
Solved Threads: 691
Nearly a Posting Maven
woooee is online now Online
2,301 posts
since Dec 2006
Aug 11th, 2009
0

Re: Need help with a looping problem

Thanks so much for your help! It worked!!
Now it is going line by line through the command list -

But, I have another problem which is the program outputs files with the same basename so they are overwritten everytime the program runs. I have written the following code to change the basenames of the output files when they are written to the directory. But, it only works for the first couple of files - what's the best way to modify this portion of the code to keep it looping ?
Thanks again-

for rec in input_list:
rec.strip()
os.system(rec)
count=1
for fn in os.listdir("."):
if fn[-5:] == "ML.dS":
os.rename(fn, "%01iML.dS" %count)
count=count+1
Reputation Points: 7
Solved Threads: 0
Newbie Poster
miac09 is offline Offline
12 posts
since Aug 2009
Aug 11th, 2009
0

Re: Need help with a looping problem

If you want something to keep looping couldn't you just wrap it up in a while loop?
While count < somenumber:
do these things
Reputation Points: 17
Solved Threads: 9
Junior Poster in Training
willygstyle is offline Offline
60 posts
since Aug 2009

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in Python Forum Timeline: PyGtk/Matplotlib drawing issue, please help!
Next Thread in Python Forum Timeline: SQLite and Placeholder





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC