Lire et écrire en même temps

GenShiJin Messages postés 1 Date d'inscription vendredi 11 novembre 2005 Statut Membre Dernière intervention 25 janvier 2008 - 25 janv. 2008 à 16:08
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 - 27 janv. 2008 à 00:05
Bonjour à tous !

Je m'excuse à l'avance si ma question a déjà été traité mais je cherche à savoir comment ouvrir un fichier en lecture et en écriture en même temps. Je cherche à remplacer dans mes fichiers .php des chemins relatifs par des chemins absolus, mais impossible d'y arriver ! J'ai bien essayer comme mode r ou r+ ou même r+w (les infos dans help(file) ne sont pas très claires) mais rien n'y fait !

Voivi mon code actuel: (la fonction "existe" vérifie tout simplement si le fichier est présent)

past = raw_input("Chaine de caractère à remplacer ?")
futur = raw_input("La remplacer par ?")
fname = raw_input("Fichier à traiter ?")

while (not existe(fname)):
    print "Le fichier", fname, "est introuvable."
    fname = raw_input("Fichier à traiter ?")
   
if existe(fname):
    fichier = open(fname, 'r+')
    for i in fname:
        ligne = fichier.readline()
        if past in ligne:
            ligne.replace(past,futur)
else:
    print "fin du programme"
    exit

fichier.close()
print "done"
exit

Merci pour votre aide !!

1 réponse

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
27 janv. 2008 à 00:05
Le plus simple c'est peut être de fire comme ça.

if existe(fname):
    fichier = open(fname, 'r')
    lines = fichier.readlines();
    fichier.close();
    fichier = open(fname, 'w')
    for line in lines:
        if past in line:
            newline = line.replace(past,futur)
            fichier.write(newline)
       else:
            fichier.write(line)

Tu peux aussi essayer ça (plus optimisé)
if existe(fname):

    fichier = open(fname, 'r')

    lines = fichier.readlines();

    fichier.close();
    newlines = []

    for line in lines:

        if past in line:

            newline = line.replace(past,futur)

            newlines.append(newline)  
        else:

            newlines.append(line)

    fichier = open(fname, 'w')
    f.write("\n".join(newlines))
    f.close()

Cdt
0
Rejoignez-nous