CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] Détection de modification

BeslSmasher
BeslSmasher
Niveau 10
15 avril 2016 à 01:35:19

Bonjour,

Je cherche une méthode pour détecter si un fichier a été modifié sous GNU/Linux mais malheureusement je n'y arrive pas. J'ai voulu par exemple tester en md5 mais je me retrouve avec des complications lorsqu'il s'agit de convertir tout le texte en binaire, etc, et au final je suis un peu paumé.

Si vous pouviez me guider, merci d'avance. :noel:

MrGreez94
MrGreez94
Niveau 10
15 avril 2016 à 01:39:22

Une date de modification qui change doit suffire non ? Il me semble que si le fichier a été changé et uniquement si son contenu est différent, la date de modification est actualisée.

BeslSmasher
BeslSmasher
Niveau 10
15 avril 2016 à 01:48:28

Le 15 avril 2016 à 01:39:22 MrGreez94 a écrit :
Une date de modification qui change doit suffire non ? Il me semble que si le fichier a été changé et uniquement si son contenu est différent, la date de modification est actualisée.

Cependant c'est en minutes seulement, et c'est légèrement trop lent pour ce que j'essaie de réaliser. :-(

J'ai même essayé un truc basique mais complètement dégueulasse et ça n'a pas l'air de marcher :


com_path = "config.txt"
file1 = open(com_path)
t1 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
t2 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
for line in range(1,21):
	t1[line] = file1.readline(line)

while True:
	file2 = open(com_path)
	for line in range(1,21):
		t2[line] = file2.readline(line)
		
	for line in range(1,21):
		if (t2[line] == t1[line]):
			print("Same")
		else:
			print("False")
			
	file1 = file2
	for line in range(1,21):
		t1[line] = file1.readline(line)
MrGreez94
MrGreez94
Niveau 10
15 avril 2016 à 02:04:53
import time

com_path = "config.txt"
file = open(com_path, 'r')
lines = file.readlines()
file.close()

while True:
    file = open(com_path, 'r')
    newLines = file.readlines()
    file.close()

    for i in range(len(lines)):
        if newLines[i] == lines[i]:
            print("Ligne {}: Same!".format(i))
        else :
            print("Ligne {}: Different!".format(i))

    print()
    time.sleep(1)

J'ai fais ça à l'arrache, ça a l'air de marcher. J'ai simplifié le code, mais je pense que le problème venait du fait que tu ne fermais pas le fichier à chaque boucle ce qui fait que tu ne voyais aucun changement, je me trompe ? :(

Message édité le 15 avril 2016 à 02:05:18 par MrGreez94
BeslSmasher
BeslSmasher
Niveau 10
15 avril 2016 à 02:23:13

Le 15 avril 2016 à 02:04:53 MrGreez94 a écrit :
import time com_path = "config.txt" file = open(com_path, 'r') lines = file.readlines() file.close() while True: file = open(com_path, 'r') newLines = file.readlines() file.close() for i in range(len(lines)): if newLines[i] == lines[i]: print("Ligne {}: Same!".format(i)) else : print("Ligne {}: Different!".format(i)) print() time.sleep(1)

J'ai fais ça à l'arrache, ça a l'air de marcher. J'ai simplifié le code, mais je pense que le problème venait du fait que tu ne fermais pas le fichier à chaque boucle ce qui fait que tu ne voyais aucun changement, je me trompe ? :(

Merci pour l'aide, mais en fait j'avais justement des changements tout le temps (des faux changements). Et j'ai un autre problème qui est très récurrent avec les définitions là, même dans ton code par exemple le newLines est considéré comme pas défini, je comprends pas la logique exacte dans le Python. :(

MrGreez94
MrGreez94
Niveau 10
15 avril 2016 à 02:41:58

Étrange ça, pourtant le truc marche sans problème chez moi :(
Tu peux poster une capture d'écran du code et de l'erreur ? Tu utilises quelle version de python ? :)
Tu entends quoi par " je comprends pas la logique exacte dans le Python." ?

BeslSmasher
BeslSmasher
Niveau 10
15 avril 2016 à 02:42:51

EDIT: Alors je ne sais pas pour quelle raison merdique j'avais eu une valeur non assignée et j'arrivais pas à faire fonctionner (sûrement py2 au lieu du 3) mais j'ai retesté et ça marche impec. On m'avait filé plusieurs autres trucs sur IRC avec des zip() et autres auxquels je pigeais que dalle mais là ça marche, c'est parfait et je comprends. Il manquait juste une ligne pour que le lines prenne les valeurs de newLines.

Merci pour ton aide, ça fait des heures que je grille ça, je peux enfin me coucher en paix. :hap:

Vrai edit: > Le 15 avril 2016 à 02:41:58 MrGreez94 a écrit :
je comprends pas la logique exacte dans le Python.

J'ai tout le temps des erreurs à cause de la définition des valeurs, entre les trucs locaux qui marchent pas parce que je les définis hors d'une fonction ou trop tard, etc, alors que l'opération est techniquement possible. :pf:

Message édité le 15 avril 2016 à 02:44:45 par BeslSmasher
MrGreez94
MrGreez94
Niveau 10
15 avril 2016 à 02:44:24

Pas de problème, content d'avoir pu t'aider, bonne nuit :hap:

BeslSmasher
BeslSmasher
Niveau 10
15 avril 2016 à 16:47:13

Le 15 avril 2016 à 13:11:29 bluepoint_ a écrit :
'rb' pour 'read binary'

Putain c'était aussi simple de lire en binaire en fait ? Et j'avais bloqué sur ça (ou une autre connerie) comme un con. :rire:

Et sinon, j'ai une autre question concernant Python : qu'est-ce que je peux utiliser pour transférer des fichiers par bluetooth ? J'ai cru comprendre que PyOBEX et OBEXftp étaient les seules solutions mais je suis quelque peu incertain vu comment c'est pas documenté du tout.

dark_drow
dark_drow
Niveau 15
15 avril 2016 à 17:06:04

j'utilise ça perso :
last_modified = 0 while True: time.sleep(5) mtime_cur = os.path.getmtime(watch_path) if mtime_cur != last_modified: last_modified = mtime_cur

BeslSmasher
BeslSmasher
Niveau 10
15 avril 2016 à 17:07:42

Le 15 avril 2016 à 16:59:23 bluepoint_ a écrit :
après 15 secondes de google avec python bluetooth
http://stackoverflow.com/questions/10583362/bluetooth-lib-for-python-3

Transfert par bluetooth pas communication, PyBluez est insuffisant pour ça.

BeslSmasher
BeslSmasher
Niveau 10
15 avril 2016 à 20:12:22

Le 15 avril 2016 à 17:39:15 bluepoint_ a écrit :

Le 15 avril 2016 à 17:07:42 BeslSmasher a écrit :

Le 15 avril 2016 à 16:59:23 bluepoint_ a écrit :
après 15 secondes de google avec python bluetooth
http://stackoverflow.com/questions/10583362/bluetooth-lib-for-python-3

Transfert par bluetooth pas communication, PyBluez est insuffisant pour ça.

t'as regardé lightblue ?

C'est du Python2, ce qui me gênait. Mais finalement j'utilise PyOBEX et ça a l'air de très bien marcher.

UnTrucDeOufOuf
UnTrucDeOufOuf
Niveau 7
16 avril 2016 à 11:00:05

Surveillance en temps réél :

https://the.randomengineer.com/2015/04/24/using-inotify-to-watch-for-directory-changes-from-python/
(dans l'exemple ça surveille un dossier mais ça marche aussi avec les fichiers)

de rien :hap:

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment