Mestika Mestika - 4 months ago 28
Python Question

Converting a bash script to python (small script)

I’ve a bash script I’ve been using for a Linux environment but now I have to use it on a Windows platform and want to convert the bash script to a python script which I can run.

The bash script is rather simple (I think) and I’ve tried to convert it by google by way around but can’t convert it successfully.

The bash script looks like this:

runs=5

queries=50

outfile=outputfile.txt

date >> $outfile


echo -e "\n---------------------------------"
echo -e "\n----------- Normal --------------"
echo -e "\n---------------------------------"
echo -e "\n----------- Normal --------------" >> $outfile
for ((r = 1; r < ($runs + 1); r++))
do
echo -e "Run $r of $runs\n"

db2 FLUSH PACKAGE CACHE DYNAMIC

python reads.py -r1 -pquery1.sql -q$queries -shotelspec -k6 -a5 >> $outfile
done


The main command, the python read.py … etc. is another python file I’ve been given and have the arguments as you see.

I know it is a lot to ask for, but it would really help me out if someone could convert this to a python script I can use or at least give me some hints and directions.

Sincerely

Mestika

Added per request:



This is what I've written but without success:

runs=5
queries=50
outfile=ReadsAgain.txt
file = open("results.txt", "ab")

print "\n---------------------------------"
print "\n----------- Normal --------------"
print "\n---------------------------------"
file.write("\n----------- Normal --------------\n")
print "\n------------- Query without Index --------------"
file.write("\n------------- Query without Index --------------\n")
for r = 1; r < (%s + 1); r++ % runs
print "Run %s of %s \n" % r % runs

db2 FLUSH PACKAGE CACHE DYNAMIC

output = python reads.py -r1 -pquery1.sql -q$queries -shotelspec -k6 -a5
file.write(output)

file.close()

Answer

It should be fairly simple to port your program. The only tricky part will be running the db2 command and (maybe) refactoring reads.py so that it can be called as a library function.

The basic idea is the same:

  • Setting local variables is the same.
  • Replace echo with print.
  • Replace your loop with for r in range(runs):.
  • Get the date with the datetime module.
  • Replace write to file with the file objects module.
  • Replace the call to db2 with the subprocess module.
  • You'll need to import reads.py to use as a library (or you can use subprocess).

But, as Marcelo says, if you want more help- you're best off putting in some effort of your own to ask direct questions.