2013-05-04 5 views
0

J'ai un fichier texte qui sera rempli en fonction d'un bouton radio sélectionné par un utilisateur en phplecture d'un fichier txt dynamiquement avec Python

Je lis à partir du même fichier texte, chaque fois que je trouve qu'un nouvelle ligne a été ajouté le script Python l'imprime. Pour l'instant je ne fais que l'imprimer. Finalement, je vais envoyer un message sur un modem GSM basé sur les nouveaux enregistrements dans le fichier .txt. En ce moment je l'imprime juste pour m'assurer que je peux identifier un nouvel enregistrement.

Voici le code que j'utilise. Cela fonctionne très bien.

def main(): 
    flag = 0 
    count = 0 
    while flag == 0: 
     f = open('test.txt', 'r') 
     with open('test.txt') as f: 
      for i, l in enumerate(f): 
       pass 
     nol = i + 1 
     if count < nol: 
      while count <= nol: 
       f = open('test.txt', 'r') 
       a = f.readlines(count) 
       if count == 0: 
        print a[0] 
        count = count+2 
       else: 
        print a[count-1] 
        count = count+1 
if __name__ == '__main__': 
    main() 

Je me demandais s'il y avait une meilleure façon de le faire.

De même, php continuera à écrire dans le fichier. Et python continuera à lire. Cela va-t-il provoquer un conflit? Depuis plusieurs instances sont ouvertes?

+2

1 retrait d'espace ?? – pradyunsg

+2

Peut-être que ce serait mieux adapté à la codereview stackexchange? – UloPe

+0

duplication possible de [queue -f en python sans time.sleep] (http://stackoverflow.com/questions/1475950/tail-f-in-python-with-no-time-sleep) – Aya

Répondre

1

Selon this répondre, vous pouvez utiliser watchdog package pour surveiller les modifications apportées dans le fichier. Vous pouvez également utiliser solution en utilisant fcntl dans Unix.

La première solution a l'avantage d'être multiplateforme.

Questions connexes