[Python] exercices utilisant le générateur met en œuvre l'auditeur et filtrer les fichiers entrants

Exercice: Lorsqu'un fichier est enregistré, le contenu stocké en cours d'exploration, telles que la fonction d' exécution, de lire d' abord le contenu du fichier à écrire un nouveau contenu, enregistrer en même temps, saisir le nouveau contenu, en temps réel surveillance!
Mise à jour: ne peut ramper sur les mots sensibles, tels que le champ contient python, puis ramper, ou ne pas explorer les
idées:
1. Définir une fonction de générateur, d' abord lire le contenu du fichier
2. Si le contenu lu n'est pas vide, donnent les valeurs actuelles
3. entrez le contenu

def tail(file):
    with open(file,'r',encoding='utf-8') as f:
        while True:
            line=f.readline()
            if line.strip():
                yield line.strip()
g=tail('log1')
for i in g:
    print(i)

Ne pas utiliser une fonction de générateur si vous le pouvez, la réponse est possible, par exemple,

def tail(file):
    with open(file,'r',encoding='utf-8') as f:
        while True:
            line=f.readline()
            if line.strip():
                print(line.strip())
tail('log1')

Peut également obtenir les mêmes fonctionnalités, mais l'inconvénient est, si je veux ajouter du contenu spécifique avant et après l'entrée du contenu ne peut pas être atteint, mais il peut utiliser une fonction de générateur, par exemple, je pense avant d'entrer dans un résultat, une augmentation *** *, uniquement pour boucle couplée à l'aide du code de sortie est comme suit

def tail(file):
    with open(file,'r',encoding='utf-8') as f:
        while True:
            line=f.readline()
            if line.strip():
                yield line.strip()
g=tail('log1')
for i in g:
    print("****",i)

Exercice Upgraded: déterminer si de python mot sensible, suivant le code dans le champ:

def tail(file):
    with open(file,'r',encoding='utf-8') as f:
        while True:
            line=f.readline()
            if 'python' in line.strip() :
                yield line.strip()
g=tail('log1')
for i in g:
    print("****",i)
Publié 13 articles originaux · a gagné les éloges 1 · vues 195

Je suppose que tu aimes

Origine blog.csdn.net/aa12551827/article/details/104566177
conseillé
Classement