+ Répondre à la discussion
Page 2 sur 2 PremièrePremière 12
Affichage des résultats 21 à 22 sur 22
  1. #21
    Invité de passage
    TALN:inférence grammaticale
    Inscrit en
    avril 2010
    Messages
    16
    Détails du profil
    Informations professionnelles :
    Activité : TALN:inférence grammaticale

    Informations forums :
    Inscription : avril 2010
    Messages : 16
    Points : 1
    Points
    1

    Par défaut

    c'est une solution intermédiaire mais elle marche super bien
    Merci

    Citation Envoyé par tyrtamos Voir le message
    Mais si, je vais finir par comprendre...


    A défaut d'autre chose, j'exploiterais la solution que je viens de donner:

    1- enregistrer le contenu qu'on veut ajouter, dans un fichier temporaire en texte utf-16,

    2- et le recopier sous forme binaire à la fin de l'autre, en oubliant son BOM avec seek.

    Je viens d'essayer: ça marche. Voilà ce que j'ai fait:

    J'ai un fichier "source.txt" encodé en utf-8, et qui contient:



    Je le convertit en fichier utf-16 avec BOM => fichier "destination.txt":

    Code :
    1
    2
    3
    4
    5
    6
    import codecs
     
    with codecs.open("source.txt", 'r', 'utf-8') as fs:
        with codecs.open("destination.txt", 'w', 'utf-16') as fd:
            for ligne in fs:
                fd.write(ligne)
    Maintenant, je fait la même chose avec comme fichier destination un fichier temporaire "temp.txt", toujours texte en utf-16 avec BOM:

    Code :
    1
    2
    3
    4
    with codecs.open("source.txt", 'r', 'utf-8') as fs:
        with codecs.open("temp.txt", 'w', 'utf-16') as fd:
            for ligne in fs:
                fd.write(ligne)
    Et maintenant, je vais transporter le fichier temporaire "temp.txt" en mode binaire (sans son BOM) à la fin du 1er fichier "destination.txt":

    Code :
    1
    2
    3
    4
    with open("temp.txt", 'rb') as fs:
        with open("destination.txt", 'ab') as fd:
            fs.seek(2)
            fd.write(fs.read())
    Et voilà! Si j'essaie de lire le fichier destination.txt, il contient bien 2 fois le fichier source avec l'encodage utf-16:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    with codecs.open("destination.txt", 'r', 'utf-16') as fd:
        for ligne in fd:
            print ligne.rstrip()
    abcéèçàùôï
    abcéèçàùôï
    abcéèçàùôï
    abcéèçàùôï
    abcéèçàùôï
    abcéèçàùôï
    J'ai bon?

  2. #22
    Invité de passage
    TALN:inférence grammaticale
    Inscrit en
    avril 2010
    Messages
    16
    Détails du profil
    Informations professionnelles :
    Activité : TALN:inférence grammaticale

    Informations forums :
    Inscription : avril 2010
    Messages : 16
    Points : 1
    Points
    1

    Par défaut

    c'est une solution intermédiaire mais elle marche super bien
    Merci
    Citation Envoyé par tyrtamos Voir le message
    Mais si, je vais finir par comprendre...


    A défaut d'autre chose, j'exploiterais la solution que je viens de donner:

    1- enregistrer le contenu qu'on veut ajouter, dans un fichier temporaire en texte utf-16,

    2- et le recopier sous forme binaire à la fin de l'autre, en oubliant son BOM avec seek.

    Je viens d'essayer: ça marche. Voilà ce que j'ai fait:

    J'ai un fichier "source.txt" encodé en utf-8, et qui contient:



    Je le convertit en fichier utf-16 avec BOM => fichier "destination.txt":

    Code :
    1
    2
    3
    4
    5
    6
    import codecs
     
    with codecs.open("source.txt", 'r', 'utf-8') as fs:
        with codecs.open("destination.txt", 'w', 'utf-16') as fd:
            for ligne in fs:
                fd.write(ligne)
    Maintenant, je fait la même chose avec comme fichier destination un fichier temporaire "temp.txt", toujours texte en utf-16 avec BOM:

    Code :
    1
    2
    3
    4
    with codecs.open("source.txt", 'r', 'utf-8') as fs:
        with codecs.open("temp.txt", 'w', 'utf-16') as fd:
            for ligne in fs:
                fd.write(ligne)
    Et maintenant, je vais transporter le fichier temporaire "temp.txt" en mode binaire (sans son BOM) à la fin du 1er fichier "destination.txt":

    Code :
    1
    2
    3
    4
    with open("temp.txt", 'rb') as fs:
        with open("destination.txt", 'ab') as fd:
            fs.seek(2)
            fd.write(fs.read())
    Et voilà! Si j'essaie de lire le fichier destination.txt, il contient bien 2 fois le fichier source avec l'encodage utf-16:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    with codecs.open("destination.txt", 'r', 'utf-16') as fd:
        for ligne in fd:
            print ligne.rstrip()
    abcéèçàùôï
    abcéèçàùôï
    abcéèçàùôï
    abcéèçàùôï
    abcéèçàùôï
    abcéèçàùôï
    J'ai bon?

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •