je reçois une erreur en essayant de décompresser un fichier, supprimez les lignes que je ne suis pas intéressé, et enfin écrire les lignes restantes dans un fichier. Voici mon code:lors du décompactage un fichier, supprimer les lignes indésirables avant de les écrire dans un fichier
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;
Voici l'erreur que je reçois:
AttributeError: 'bytes' object has no attribute 'startwith'
alors j'ai essayé de le changer à ce code:
......
.......
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)
Cette fois obtenu cette erreur:
TypeError: a bytes-like object is required, not 'str'
Je l'ai également changé avec le suivant, mais cela n'a pas fonctionné non plus. C'était comme si c'était itérer encore et encore:
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)
Ai-je rien manqué? Merci,
Pouvez-vous spécifier quelle ligne déclenche réellement l'erreur? – Saustin
@Saustin pour la ligne dans chaque fichier_gzip: si line.startwith! = ('#', '!', '^'): continuer; – NinaDev
avez-vous essayé 'str (line) .startwith! = ...'? – VBB