python - How do I get the log file a program creates when running it with subprocess.call()? -


i work gaussian, program molecular geometry optimization, among other applications. gaussian can take days end single optimization decided make program on python send me e-mail when finishes running. e-mail sending figured out. problem gaussian automatically generates log file , chk file, contains actual results of process , using subprocess.call(['command'], shell=false) both files not generated.

i tried solve problem os.system(command), gives me .log file , .chk file, e-mail sent without waiting optimization completion.

another important thing, have run entire process in background, because said @ beginning might take days on , can't leave terminal open long.

by using subprocess.call(['command'], shell=false) both files not generated.

your comment suggests trying run subprocess.call(['g09 input.com &'], shell=false) wrong.

your code should raise filenotfounderror. if don't see it; means stderr hidden. should fix (make sure can see output of sys.stderr.write('stderr\n')). default, stderr not hidden i.e., way start parent script broken. able disconnect session, try:

$ nohup python /path/to/your_script.py &>your_script.log & 

or use screen, tmux.

shell=false (btw, default—no need pass explicitly) should hint call() function not expect shell command. , indeed, subprocess.call() accepts executable , parameters list instead—it not run shell:

subprocess.check_call(['g09', 'input.com', 'arg 2', 'etc']) 

note: check_call() raises exception if g09 returns non-zero exit code (it indicates error usually).


Comments

Popular posts from this blog

java - nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet Hibernate+SpringMVC -

sql - Postgresql tables exists, but getting "relation does not exist" when querying -

asp.net mvc - breakpoint on javascript in CSHTML? -