我正在使用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
答案 0 :(得分:1)
在这里,试试这个:
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)
try:
msg= ast.literal_eval(data)
if msg['some_string'] == 'some_string' :
print msg['status']
else :
continue
except SyntaxError:
continue #skip this line
except :
print traceback.format_exc()
pass
exit()
希望它有所帮助!
答案 1 :(得分:-1)
要跳过错误,您只需编码就像:
try:
your code
except {Your error}:
pass
或
try:
your code
except:
pass
表示所有错误
你也可以使用smth:
import sys
import traceback
try:
{code}
except Exception:
_type, _value, _trace = sys.exc_info()
print "Type:\n\t{0}\nException:\n\t\t{1}\nTraceback:\n\t{2}".format(
_type, _value, traceback.format_tb(_trace))