Python不会将数据写入磁盘

时间:2014-02-19 20:04:17

标签: python file-io cluster-computing flush

我正在尝试建立一个在科学集群上运行的python脚本。

将输入文件拆分为块,将它们一个提交给集群,对输出进行排序和评估,然后提交下一个块。

然而,我有一个奇怪的问题。

我在进程之前直接为子进程创建输入文件。但是,它从未奏效,并向我显示“无数据处理”错误。

我终于运行了这个片段:

tmp = open ("individual_list.txt","w")
for line in working:
    tmp.write (line)
tmp.close
tmp.flush
os.fsync
time.sleep(60)
command=["srun"]
command.append ("--cpus-per-task=1")
command.append ("--chdir="+cwd)
command.append ("-o")
command.append (uniqueID+"#"+str(loop)+"_mut.out")
command.append (EXEC)
#command=[EXEC]
command.append ("-runfile")
command.append (CMD1)
out= open (uniqueID+"#"+str(loop)+"_mut.out","w")
p1=subprocess.Popen (command, cwd=cwd)
p1.wait()
out.close

你可能已经注意到我已经偏执了缓冲输出了。但仍然在等待的那一刻,文件individual_list.txt在文件系统中创建但是为空。 它只在子进程完成后才被填充。 这是一个python问题还是我必须向我们的集群管理员寻求帮助?

最佳, 扬

1 个答案:

答案 0 :(得分:4)

您没有调用closeflush方法。您需要在()之后执行此操作:

tmp.close()
tmp.flush()
etc.

否则,您只需要参考这些方法。以下是演示:

>>> def foo():
...     return 'hi'
...
>>> foo
<function foo at 0x020B2540>
>>> foo()
'hi'
>>>