On Mon, 24 Nov 2008 20:49:28 +0100
ALD <dieudonne.alain@???> wrote:
> J'ai effectivement un peu regardé du coté de Python, mais je ne me vois
> pas apprendre ce nouveau langage qui peut te paraitre facile, mais pour
> moi... déja le bash j'ai du mal, alors pour le python je crains le pire.
>
> Je n'écris ces scripts que pour automatiser certaine actions. Je ne
> pense pas devenir développeur et les journées que je passe à ça je ne
> les consacre pas directement à mon métier ni à la modélisation 3D des
> projets.
Il y a 10 ans mon mentor d'alors m'a dit que si mon script bash
dépassait 10 lignes, alors il valait mieux le ré-écrire en python (le
temps passé à ré-écrire serait gagné 2 fois quand il faudra reprendre
ce bout de code).
C'est sans doute un des conseils les plus pertinents que j'ai eu.
Aujourd'hui encore je fais écrire à python mes scripts shell :)
--
Jérôme KIEFFER
http://www.terre-adelie.org
#!/usr/bin/python
#this program submit a FOX job through the PBS queue manager with the input data inlined
# Jerome Kieffer 29/03/2007
import os,sys,gzip
def SubmitOneFile(name,iter=1000000):
"""submit one file after the other"""
ext=os.path.splitext(name)[1].lower()
if ext==".gz":
data=[i.strip() for i in gzip.open(name).readlines()]
else:
data=[i.strip() for i in open(name).readlines()]
path,filename=os.path.split(name)
basename=os.path.splitext(filename)[0]
pbs=basename+".pbs"
print "submitting file : %s as pbs job : %s"%(filename,pbs)
cwd=os.getcwd()
os.chdir(os.path.join(cwd,path))
f=open(pbs,"w")
f.write("echo -n 'Running Fox on computer '\nhostname\ndate\nuname -a\n")
f.write("if [ -d /tmp/$PBS_JOBID ] ; then cd /tmp/$PBS_JOBID ; else cd /tmp ; fi\n")
f.write("cat <<FINITO >input.xml\n")
for i in data:f.write(i+"\n")
f.write("FINITO\n")
f.write("nice /usr/local/bin/Fox-nogui input.xml -o output.xml -n %i 1>&2 \n"%iter)
f.write("cat output.xml\n")
f.close()
os.system("qsub -q fox %s"%pbs)
os.chdir(cwd)
if len(sys.argv)<2:
raise "Please give the name of the file to process. Possible options are -n number of trials (1 000 000 by default)"
names=[]
options=[]
iter=10000000
for i in sys.argv[1:]:
if os.path.isfile(i):names.append(i)
elif i.find("-n=")==0:iter=int(i.split("=")[1])
for name in names:
SubmitOneFile(name,iter)