我在服务器上使用pythonv3.4,经常需要将多个文件从本地目录复制/移动到hdfs目录。我的所有文件都在子目录中,而子目录又在mydir中。这是我使用的命令- $ hdfs dfs -copyFromLocal MyDir/* /path/to/hdfs/
这个命令在服务器上运行得很好,但是当我在python中使用subprocess使用相同的命令时 >>> subprocess.call(['hdfs', 'dfs', '-copyFromLocal', 'MyDir/*', '/path/to/hdfs/'])
它给出了以下错误-
copyFromLocal: `MyDir/*': No such file or directory
1
p、 我也试过了 ['hadoop', 'fs', '-put'....]
而不是 ['hdfs', 'dfs', '-copyFromLocal'....]
,它也不起作用。
有人能帮我吗?任何帮助都将不胜感激。
编辑-我需要移动文件和子目录。
3条答案
按热度按时间fae0ux8s1#
我将编写一个带有子进程的函数,它将为您提供输出和错误:
然后:
它应该遍历目录中的所有文件,并将它们放在所需的hdfs目录中
vd8tlhqk2#
将命令中的所有内容附加到单个字符串中,并给出参数shell=true
jei2mxaa3#
添加
shell=True
:阅读本文:subprocess中“shell=true”的实际含义