创建一个输入文件并在python中运行外部程序

时间:2016-05-09 20:03:49

标签: python file

所有

我编写了一个小python程序来创建一个文件,该文件用作输入文件来运行名为srce3d的外部程序。这是:

   fin = open('eff.pwr.template','r')  
   fout = open('eff.pwr','wr')  
   for line in fin:
      if 'li' in line:
        fout.write( line.replace('-2.000000E+00', `-15.0`) )
      else: 
        fout.write(line)
   fin.close
   fout.close    
   os.chmod('eff.pwr',0744)
# call srce3d
   os.system("srce3d -bat -pwr eff.pwr >& junk.out")

这不起作用。输入文件被正确写入,但srce3d在读取期间抱怨文件结束。 os.system命令适用于预先存在的文件,无需打开该文件。

感谢您的帮助

2 个答案:

答案 0 :(得分:4)

首先,您缺少关闭函数调用。

 fin.close() ## the round braces () were missing.
 fout.close()

更好的方法是使用上下文。

    with open('eff.pwr.template','r') as fin, open('eff.pwr','wr') as fout:
       ## do all processing here

答案 1 :(得分:1)

您实际上并未关闭该文件 - 您必须致电 file.close。所以,

fin.close
fout.close

应该是

fin.close()
fout.close()