Je voudrais savoir comment avec tkinter on peut ecrire dan un fichier a une ligne spécifier
ex :
fichier.txt
Ligne 1 : bonjour petit oiseau.
Ligne 2 : coment va tu.
Ligne 3 :
Ligne 4 : je vais te faire cuire
code :
ecrire "bouhou" ligne 3
Je voudrais savoir comment avec tkinter on peut ecrire dan un fichier a une ligne spécifier
ex :
fichier.txt
Ligne 1 : bonjour petit oiseau.
Ligne 2 : coment va tu.
Ligne 3 :
Ligne 4 : je vais te faire cuire
code :
ecrire "bouhou" ligne 3
Ce n'est pas lié à tkinter. Il n'y a pas moyen d'insérer des données dans un fichier; tu devras recopier le fichier en ajoutant les données.
Fais une recherche dans ce forum; il y a d'autres threads qui parlent de cela.
Une possibilité:
ou, si tu n'a pas la possibilité de créer un fichier temporaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #!/usr/bin/env python #-*- coding: utf-8 -*- from __future__ import with_statement import os def file_insert(filename, lines, position): with open(filename, 'r') as f_in: with open('tmp.txt', 'w') as f_out: for i, fline in enumerate(f_in): if i == position: for line in lines: f_out.write("%s\n" % line) f_out.write(fline) os.rename(filename, filename + '.backup') os.rename('tmp.txt', filename) if __name__ == '__main__': file_insert('test.txt', ['Nouvelle ligne'], 5)
Thierry
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 #!/usr/bin/env python #-*- coding: utf-8 -*- from __future__ import with_statement import os def file_insert(filename, lines, position): with open(filename, 'r+') as f: # On compte le nombre de lignes nlines = 0 for line in f: nlines += 1 if position > nlines: position = nlines f.seek(0, os.SEEK_END) read_pos = f.tell() # On met le fichier a la bonne taille size_to_move = 0 for line in lines: print >> f, line size_to_move += len(line) + 1 # On revient au debut pour chercher le point # d'insertion write_pos = f.tell() f.seek(0, os.SEEK_SET) for i in xrange(position): f.readline() insertion_pos = f.tell() # On deplace les donnees vers la fin while (read_pos - size_to_move) > insertion_pos: read_pos -= size_to_move write_pos -= size_to_move f.seek(read_pos, os.SEEK_SET) buf = f.read(size_to_move) f.seek(write_pos, os.SEEK_SET) f.write(buf) write_pos = insertion_pos + (write_pos - read_pos) f.seek(insertion_pos, os.SEEK_SET); buf = f.read(read_pos - insertion_pos) f.seek(write_pos, os.SEEK_SET) f.write(buf) # Ecriture des lignes dans le fichier f.seek(insertion_pos, os.SEEK_SET) for line in lines: print >> f, line if __name__ == '__main__': file_insert('test.txt', ['Nouvelle ligne'], 0)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager