首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用子进程HDFS打开的Python文件"cat:非法文件模式:在索引11附近的非法字符范围“

使用子进程HDFS打开的Python文件"cat:非法文件模式:在索引11附近的非法字符范围“
EN

Stack Overflow用户
提问于 2015-08-17 16:11:20
回答 1查看 494关注 0票数 0

我正在尝试加载informatica日志文件,这些日志文件存储在HDFS中的Hadoop集群中。我正在使用Python中的子进程来完成这个任务,但是我相信,由于文件名的原因,我得到了一个错误,并且我不知道如何解决这个问题。

我得到的错误是"cat:非法文件模式:索引11附近的非法字符范围“。

我的代码是:

代码语言:javascript
复制
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

我可以重命名每个文件,以避免猫认为文件名中有正则表达式,但我宁愿不这样做。有办法解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-17 16:28:30

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32055025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档