【发布时间】:2016-03-02 03:40:32
【问题描述】:
我有一个 python 程序,它可以将文件动态移动和重命名到 hadoop 集群中。这些文件的大小通常从 10mb(已解析)到 1.5gb(原始数据)不等。要完成移动命令,可能需要一段时间,据我所知,python 会通过它们进行比赛,并且没有任何移动命令可以完成。让python等待先前命令的正确方法是什么。我将命令存储在一个变量中并将其传递给 os.system。相关代码是
os.system(moverawfile)
os.system(renamerawfile)
os.system(moveparsedfile)
os.system(renameparsedfile)
我知道重命名命令基本上是瞬间完成的。我不应该使用 os.system 吗?我如何确保 python 在移动到下一个命令之前将等待每个命令完成。
【问题讨论】:
-
您的确切代码是什么?
os.system在它生成的命令退出之前不会返回。 -
无论如何你都应该使用
subprocess。例如,您可以在命令错误时引发异常。 -
os.system 只是调用
system(3),然后等待命令完成。 -
hadoop fs -put rawjsondata.txt /home/hadoop/project/March/raw/rawjsondata.txt 这就是“moverawfile”的全部