检查python的hdfs中是否存在文件

j9per5c4  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(560)

因此,我一直在使用python中的fabric包为各种hdfs任务运行shell脚本。
但是,每当我运行任务来检查hdfs中是否已经存在一个文件/目录时,它只会退出shell。下面是一个示例(我使用的是python3.5.2和fabric3==1.12.post1)

from fabric.api import local

local('hadoop fs -stat hdfs://some/nonexistent/hdfs/dir/')

如果目录不存在,则此代码生成
[localhost]本地:hadoop fs-stathdfs://some/nonexistent/hdfs/dir/ 统计:hdfs://some/nonexistent/hdfs/dir/':没有这样的文件或目录 致命错误:local()在执行'hadoop fs-stat'时遇到错误(返回代码1)hdfs://some/nonexistent/hdfs/dir/' 正在中止。 我也试过了local('hadoop fs -test -e hdfs://some/nonexistent/hdfs/dir/')` 但也引起了同样的问题。
如何使用fabric生成一个布尔变量来告诉我hdfs中是否存在一个目录或文件?

fgw7neuy

fgw7neuy1#

你可以检查一下 succeeded 从返回的结果对象的标志 local .

from fabric.api import local
from fabric.context_managers import settings

file_exists = False
with settings(warn_only=True):
    result = local('hadoop fs -stat hdfs://some/nonexistent/hdfs/dir/', capture=True)
    file_exists = result.succeeded

相关问题