IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Retours ligne, différence Windows Linux


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut Retours ligne, différence Windows Linux
    Salut,

    Le bloc-note de Windows affichant de manière illisible les fichiers créés sous Linux, j'ai installé Gedit et Eric4 pour Windows.

    En ce moment, j'ai un code qui crée des fichiers Python en utilisant le retour ligne du système, soit '\r\n' dans ce cas ci.

    Ces fichiers s'affichent correctement avec le bloc-note, mais présentent un double retour ligne avec Gedit et Eric. Si je vérifie les longueurs des lignes de texte elles ont bien deux caractères supplémentaires non visibles, ce qui est attendu, alors pouquoi ces lignes vides intercalées ?

    Dans les paramètres de l'éditeur de Gedit il n'est nulle part question de cela. Quand à Eric, la vie est trop courte pour s'aventurer dans l'éditeur de configuration.

    Y aurait-il une astuce ou bien "faut faire avec" ?

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Par défaut
    Si tu as une ligne vide, c'est que l'interprétation des 2 caractères \r et \n se font de manière séparée

    Je te conseillerais d'utiliser le bon vieux Notepad++ qui te permet facilement de visualiser ces fichiers et tu pourra facilement afficher/modifier l'encodage des fins de lignes

    Désolé de ne pas t'apporter une réponse plus précise à ton problème

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Merci mais avec Notepad++ ce n'est guère différent.

    Pour simplifier, la question se pose ainsi, avec ce code:
    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
     
    # -*- coding: utf-8 -*-
     
    import os
    L_SEP = os.linesep
     
    def write():
        strings = ['# -*- coding: utf-8 -*-\n',
                    'import os\n',
                    'import sys\n']
        with open('writetest.py', 'w') as outf:
            for s in strings:
                outf.write(s.replace('\n', L_SEP))
     
    write()
    Donc, on crée un fichier de trois lignes dont les fins de lignes sont ceux du système.

    La syntaxe s.replace('\n', L_SEP) et due au fait que le code doit être portable.

    Le fichier créé s'ouvre normalement avec le bloc-note Windows mais avec un double saut de ligne dans Gedit, Eric4 ... et Notepad++

    Pour info, les fichiers créés s'exécutent sans problème.

  4. #4
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Sous gedit (version linux, en tout cas), on choisit l’encodage et le type de fin de ligne au moment de l’enregistrement. Donc pour modifier celui d’un fichier ouvert, il faut faire “enregistrer sous”, conserver le même nom de fichier, et modifier les réglages sus-cités dans le bas du dialogue d’enregistrement…

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Par défaut
    Si tu fais L_SEP='', est ce que tu as encore un retour à la ligne mais sans saut de ligne?

    Sinon en faisant (ça fait un petit moment que j'ai pas fait de python alors je suis pas sûr de la synthaxe):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    s.replace(/\s*$/, '')
    s .= L_SEP
    normalement, \s devrait enlever tous les espaces, retour charriot en fin de ligne et ensuite il suffit de remettre le saut de ligne que tu veux

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    @ mont29, Oui mais dans mon cas le fichier est écrit par un script et non créé avec l'éditeur.
    Donc si j'ouvre le fichier dans cet éditeur et que je le réenregistre avec le bon code de fin de ligne, le code est enregistré avec le même double saut de ligne qui a été créé lors de l'ouverture.

    Le problème est dans l'ouverture du fichier, pourquoi différemment dans MS Bloc-notes et les autres éditeurs ?

    @ 6ril23, L_SEP doit être ce qui est donné par os.linesep, portabilité oblige.

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Par défaut
    Citation Envoyé par VinsS Voir le message
    @ 6ril23, L_SEP doit être ce qui est donné par os.linesep, portabilité oblige.
    oui j'avais bien compris ce que tu souhaites faire mais en faisant le test avec L_SEP='', si tu as encore un retour à la ligne, c'est que tu as bien un autre caractère de retour charriot et donc qu'il faudra mettre \n\n ou \r\n... dans ton replace

Discussions similaires

  1. Différences compilation Linux(make/gcc)/Windows(mingw)
    Par boelraty dans le forum Débuter
    Réponses: 2
    Dernier message: 28/07/2010, 09h46
  2. Différence de police Windows/Linux
    Par Digilougm dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 03/12/2009, 00h48
  3. Différence entre Linux et Windows avec array_walk_recursive
    Par fredu dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/05/2009, 12h45
  4. Réponses: 7
    Dernier message: 11/07/2007, 22h01
  5. Différence entre assembleur Windows/Linux
    Par MonsieurAk dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 29/03/2006, 09h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo