尝试解压缩文件时,出现错误,删除我不感兴趣的行,最后将其余行写入文件。这里是我的代码:解压缩文件时,在将它们写入文件之前删除不需要的行
import gzip, os, sys
dataset_names=[]
dir_path=('local drive path')
dataset_names= os.listdir(dir_path)
count=0
read_zip = [];
for dataset in dataset_names:
each_dataset=os.path.join(dir_path+'\\'+dataset+'\\'+'soft'+'\\'+dataset+'_full'+'.soft')
with gzip.open(each_dataset+'.gz', 'rb') as each_gzip_file:
if count == 2: # I wanted to check with 2 datasets first
continue;
for line in each_gzip_file:
if line.startwith !=('#', '!', '^'):
continue;
read_zip.append('\t' + line);
with open('name of a file', 'wb') as f:
f.writelines(read_zip)
print(dataset);
count+=1;
这里是我的错误:
AttributeError: 'bytes' object has no attribute 'startwith'
然后我试图将其更改为下面的代码:
......
.......
for line in each_gzip_file:
if not PY3K:
if lines.startwith != ('#', '!', '^'):
continue;
lines.append(line)
else:
lines.append(line.decode('cp437'))
makeitastring = ''.join(map(str, lines))
with open('fine name', 'wb') as f:
my_str_as_bytes = str.encode(str(,lines))
f.writelines(makeitastring)
这一次得到这个错误:
TypeError: a bytes-like object is required, not 'str'
我也改变了它与以下,但它也没有工作。这就像它一遍又一遍地迭代:
for line in each_gzip_file:
read_zip.append(line);
for x in read_zip:
if str(x).startswith != ('#', '!', '^'):
continue;
else:
final.append(x);
with open('file name', 'ab') as f:
f.writelines(final)
我错过了什么吗? 谢谢,
你能指定哪一行实际触发错误吗? – Saustin
@Saustin for each_gzip_file中的行: if line.startwith!=('#','!','^'): continue; – NinaDev
你尝试过'str(line).startwith!= ...'? – VBB