Ici, je veux écrire le word_count dans chaque boucle ligne par ligne dans le fichier. Cependant, ils sont tous écrits dos à dos.
myfile.write(f'\n')
J'ai également essayé d'ajouter une nouvelle ligne, mais à la place, cela n'écrit rien.
import os
import string
def remove_punctuation(value):
result = ""
for c in value:
# If char is not punctuation, add it to the result.
if c not in string.punctuation and c != 'Ø' and c != 'Ø' and c ! = 'Ø' and c != '«' and c != '»':
result += c
return result
def all_words(file_path):
with open(file_path, 'r', encoding = "utf-8") as f:
p = f.read()
p = remove_punctuation(p)
words = p.split()
word_count = len(words)
return str(word_count)
myfile = open('D:/t.txt', 'w')
for root, dirs, files in os.walk("C:/ZebRa", topdown= False):
for filename in files:
file_path = os.path.join(root, filename)
f = all_words(file_path)
myfile.write(f)
break
myfile.close()
p>
3 Réponses :
Remplacez cette ligne:
return f'{word_count}\n'
par
return str(word_count) + '\n'
Si vous utilisez python 3.6+, vous pouvez également essayer: p>
return str(word_count)
Vous pouvez écrire un caractère de nouvelle ligne à la fin de chaque itération:
for root, dirs, files in os.walk("C:/ZebRa", topdown= False):
for filename in files:
file_path = os.path.join(root, filename)
f = all_words(file_path)
myfile.write(f)
break
myfile.write('\n')
Lorsque vous utilisez file.write (), essayez d'utiliser ceci à la place:
for string in f:
file.write(string+"\n")
Cela ajoutera une nouvelle ligne après chaque itération
Pour que votre code fonctionne, cependant , vous devez itérer dans une boucle for, comme ceci:
myfile.write(f+"\n")
J'espère que cela aide
AttributeError: l'objet 'str' n'a pas d'attribut 'ponctuation'
Essayez
myfile.write ((line + '\ n' for line in f)).TypeError: l'argument write () doit être str, pas générateur
OK, utilisez plutôt
myfile.write ([line + '\ n' for line in f])à la place.TypeError: l'argument write () doit être str, pas list
Encore une tentative:
myfile.write ('\ n'.join (f) +' \ n ')@AChampion: Pas tout à fait.
Les chiffres sont imprimés au hasard et séparément ligne par ligne.