python hdfs文件使用子进程hdfs“cat:非法文件模式:索引11附近的非法字符范围”打开

sczxawaw  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(397)

我正在尝试加载informatica日志文件,这些文件存储在hdfs中的hadoop集群上。我正在用python中的subprocess来实现这一点,但是我相信由于文件名的原因,我得到了一个错误,我不知道如何解决它。
我得到的错误是“cat:非法文件模式:索引11附近的非法字符范围”
我的代码是:

input = subprocess.Popen(["hadoop", "fs", "-cat", '/corp_staffs/IT/IICOE/process/infa_stats/WorkflowLogs/infra.[08-04-2015-(15_19)].1438719569664.log'], stdout=subprocess.PIPE)

# read the lines into an array

for line in input.stdout:
        print line

我可以重命名每个文件,以避免cat认为文件名中有regex,但我不希望这样。有办法解决这个问题吗?

rbl8hiat

rbl8hiat1#

quotechars=re.compile('|'.join(re.escape(s) for s in r'\[]()*?'))
def quote_name(filename):
    return re.sub(quotechars, r'\\\g<0>', filename)

input = subprocess.Popen(
    [
        "hadoop", "fs", "-cat",
        quote_name('/corp_staffs/IT/IICOE/process/infa_stats/WorkflowLogs/infra.[08-04-2015-(15_19)].1438719569664.log')
    ], stdout=subprocess.PIPE)

相关问题