Tôi đang cố tải các tệp nhật ký tin học trên cụm Hadoop được lưu trữ trong HDFS. Tôi đang sử dụng quy trình con trong Python để thực hiện việc này nhưng tôi tin rằng tôi đang gặp lỗi do tên tệp và tôi không chắc chắn cách khắc phục.
Lỗi tôi nhận được là "cat: chế độ tệp không hợp lệ: phạm vi ký tự không hợp lệ gần chỉ mục 11"
我的代码是:
đầu vào = subprocess.Popen(["hadoop", "fs", "-cat", '/corp_staffs/IT/IICOE/process/infa_stats/WorkflowLogs/infra.[08-04-2015-(15_19)].1438719569664. log'], stdout=subprocess.PIPE)
# đọc các dòng thành một mảng
cho dòng trong input.stdout:
dòng in
Tôi có thể đổi tên từng tệp để tránh mèo nghĩ rằng có biểu thức chính quy trong tên tệp, nhưng tôi không muốn làm điều đó. Có cách nào để giải quyết vấn đề này?
quotechars=re.compile('|'.join(re.escape(s) for s in r'\[]()*?'))
def quote_name(tên tệp):
return re.sub(quotechars, r'\\\g<0>', tên tệp)
đầu vào = subprocess.Popen(
[
"hadoop", "fs", "-cat",
quote_name('/corp_staffs/IT/IICOE/process/infa_stats/WorkflowLogs/infra.[08-04-2015-(15_19)].1438719569664.log')
], stdout=tiến trình con.PIPE)
Về việc mở tệp Python HDFS bằng cách sử dụng hdfs quy trình con "cat: Mẫu tệp bất hợp pháp: Phạm vi ký tự không hợp lệ gần chỉ mục 11", chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/32055025/
Tôi là một lập trình viên xuất sắc, rất giỏi!