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

Interfaçage autre langage Python Discussion :

Python et SPSS - enregistrer .sps dans un dossier


Sujet :

Interfaçage autre langage Python

  1. ###raw>post.musername###
    Candidat au Club
    Python et SPSS - enregistrer .sps dans un dossier
    Hello tout le monde!

    Je suis nouvelle en Python, et je l'utilise avec SPSS.
    J'essaie de créer un fichier de syntaxe .sps via Python, et quand il s'agit de l'enregistrer, je rencontre un soucis car je n'arrive pas à l'enregistrer où je veux.
    Je sais que c'est pas évident de gérer les \ dans Python, mais du coup je ne trouve pas de solution. Si quelqu'un peut m'aider je suis preneuse! Voilà mon code pour definir le dossier:
    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
    BEGIN PROGRAM.
    import SpssClient, os, spss, spssaux, codecs, textwrap, collections,Tkinter,tkMessageBox,ttk, tempfile,io
    from Tkinter import *
    from os.path import commonprefix
     
    SpssClient.StartClient() 
    synPathL0U = os.path.dirname(SpssClient.GetActiveDataDoc().GetDocumentPath()) 
    SpssClient.StopClient()
    synPathL1U=os.path.dirname(synPathL0U)
    synPathL2U=os.path.dirname(synPathL1U)
    synPathL3U=os.path.dirname(synPathL2U)
    print "synPathL0U =",synPathL0U
    print "synPathL1U =",synPathL1U
    print "synPathL2U =",synPathL2U
     
    syntaxpath=str(spssaux._smartquote(os.path.dirname(synPathL2U)+"\\"+"0.syntaxes"+"\\"))
    print syntaxpath


    Il print bien ce qu'il faut dans syntaxpath. Mais quand il s'agit de sauvegarder le fichier, cela ne fonctionne pas:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    syntax_name="checking"
    if spss_name!="":
        syntax_name=syntaxpath + "_checking"
     
    outfile=codecs.open(syntaxpath + syntax_name + ".sps","w+","utf-8-sig")
    outfile.write(global_syntax)
    outfile.close()
    print ("Syntax saved as: " + syntaxpath  + syntax_name + ".sps")
     
    end program.


    Dans le dernier print, il ne m'affiche pas du tout le path comme il le faut, avec des \\ et des guillemets un peu n'importe où:
    IOError: [Errno 22] invalid mode ('wb') or filename: '"C:\\xxxxx\\yyyyy\\0.syntaxes\\""C:\\xxxxx\\yyyyy\\0.syntaxes\\"_checking.sps'
    Dans l'idéal, je souhaiterais qu'il me sauvegarde mon .sps dans le syntaxpath et ensuite au niveau du nom, j'aimerais incorporer le 'yyyy' qu'il m'affiche dans le path à la toute fin.
    Je n'ai pas mis les 'entre' du code car il est vraiment long et je ne suis pas sûre de l'utilité.

    Dites moi si ce n'est pas clair, et j'espère que quelqu'un pourra m'aider. Merci d'avance!!
      0  0

  2. ###raw>post.musername###
    Expert éminent sénior
    Salut,

    Citation Envoyé par carcow7 Voir le message
    Dans le dernier print, il ne m'affiche pas du tout le path comme il le faut, avec des \\ et des guillemets un peu n'importe où:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    IOError: [Errno 22] invalid mode ('wb') or filename: '"C:\\xxxxx\\yyyyy\\0.syntaxes\\""C:\\xxxxx\\yyyyy\\0.syntaxes\\"_checking.sps'
    Ce n'est pas le "print" qui affiche ce message là mais probablement l'open qui est un peu avant.
    Et si vous faites attention au nom du fichier que vous avez construit, le répertoire est répété 2 fois.

    - W
      0  0

  3. ###raw>post.musername###
    Candidat au Club
    Tout d'abord merci d'avoir pris le temps de regarder!

    Right, j'ai mis deux fois le path, j'ai corrigé, mais cela me met toujours '\\' dans le path, donc l'erreur est toujours là.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    syntax_name="checking"
    if spss_name!="":
        syntax_name=ordnumber + "_checking"
     
    outfile=codecs.open(syntaxpath + syntax_name + ".sps","w+","utf-8-sig")


    J'ai modifé l'outfile, et du coup cela me met cette erreur:

    IOError: [Errno 22] invalid mode ('w+b') or filename: '"C:\\xxxx\\yyyyy\\0.syntaxes\\"_checking.sps'
      0  0

  4. ###raw>post.musername###
    Expert éminent sénior
    Salut,

    Est ce que '"C:\\xxxx\\yyyyy\\0.syntaxes\\"_checking.sps' est un nom de fichier valide?
    Vous auriez le même genre d'erreur avec '"C:toto"titi'!

    - W
      0  0

  5. #5
    Candidat au Club
    J'ai finalement résolu le soucis en enlevant spssaux._smartquote() dans syntaxpath.

    Encore merci de l'aide!

###raw>template_hook.ano_emploi###