我正在阅读 Linux 中的 CAT 管道,使用subprocess
:
stdout=subprocess.PIPE
所以有些行有 BAD EOL,这是一个巨大的文件,我想跳过这些行并转到下一行。我如何在 Python 中做到这一点?
PS:我总是得到:
SyntaxError: EOL while scanning string literal
并且似乎在写入该文件时某些套接字停止了,因为我在该文件的末尾看到了非常大的空间。不想修,想跳过
这是我的代码:
import sys,os
import subprocess
import traceback
import re
import ast
try :
cat = subprocess.Popen(["hadoop", "dfs", "-cat", "PATH TO FILE"], stdout=subprocess.PIPE)
for data in cat.stdout:
data = re.sub(' +',' ',data)
msg= ast.literal_eval(data)
if msg['some_string'] == 'some_string' :
print msg['status']
else :
continue
except :
print traceback.format_exc()
pass
exit()
所以程序退出之前的输出:许多空格和......
^
SyntaxError:扫描字符串文字时 EOL