Python - 执行顺序(文件写入和读取)

时间:2013-02-01 01:47:29

标签: python operating-system system

行有什么原因

out = open("tmp.gp",'w')
out.write('plot sin(x)')
out.close
system('gnuplot -persist tmp.gp')

不起作用,但这些(下面)呢?

system('gnuplot -persist tmp.gp')
out = open("tmp.gp",'w')
out.write('plot sin(x)')
out.close

请注意,我不会在程序中删除tmp.gp,因此在任何一种情况下文件都存在并且在执行任何这些行之前包含命令'plot sin(x)'(因为该文件存在于上一次运行中)?

我唯一的猜测是,这可能是一场竞争条件,但是将raw_input()用于消磨时间并没有帮助(见下文)。谢谢你的帮助!

out = open("tmp.gp",'w')
out.write('plot sin(x)')
out.close
raw_input()
system('gnuplot -persist tmp.gp')

2 个答案:

答案 0 :(得分:3)

这是因为您实际上并未调用close函数,请将out.close更改为out.close()。函数调用需要()才能被调用。

答案 1 :(得分:1)

正如其他人所说,你没有正确使用close()。同时处理文件时,您应该使用以下语句:

with open("tmp.gp",'w') as out:
    out.write('plot sin(x)')
    out.close()

这种方式即使您不自行关闭文件或写入文件也会引发错误,文件仍然会被关闭。