1
votes

Écrire dans un fichier ligne par ligne Python

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>


7 commentaires

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.


3 Réponses :


3
votes

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)


0 commentaires

1
votes

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')


0 commentaires

1
votes

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


1 commentaires

AttributeError: l'objet 'str' n'a pas d'attribut 'ponctuation'