==== FAQ : Du Web aux Web Services en Python ==== == Comment écrire un chemin de fichier indépendant de l'OS ? == on dispose également de la fonction os.path.join( chemin1, chemin2) qui permet de concaténer des chemins simplement en respectant les convention de l'OS de support : chemin=os.getenv('HOME') chemin=os.path.join(chemin,'Bureau') print (chemin) /home/user/Bureau == Comment utiliser les pipes en python ?== * Le module os (import os) en python vous permet d'avoir accès à une API proche de POSIX dans laquelle vous trouvez : os.fork() pipein, pipeout = os.pipe() ... = os.read(pipein, ...) os.write(pipeout, ...) os.close(pipein) os.close(pipeout) * Python permet aussi d'accéder à une struture de pipes à la création d'un processus. Voici quelques explications : myPopen = subprocess.Popen(['cat', '-n']) : fait l'appel système non bloquant. si on veut pouvoir envoyer des données sur le stdin du process, il faut faire : myPopen = subprocess.Popen(['cat', '-n'], stdin = subprocess.PIPE). si on veut pouvoir récupérer des données de la sortie standard et de la sortie d'erreur du process, il faut faire : myPopen = subprocess.Popen(['cat', '-n'], stdout = subprocess.PIPE, stderr = subprocess.PIPE). myPopen.stdin, myPopen.stdout, myPopen.stderr : les entrées et sorties standard, quand elles ont été mises a subprocess.PIPE dans le constructeur. myPopen.stdout est de la classe file. Exemple : import subprocess s = subprocess.Popen(['bc','-q'],stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.STDOUT) ... s.stdin.write(cmde+'\n') s.stdin.flush() res = s.stdout.readline() print "Resultat:",res s.stdin.close() s.stdout.close() == Commment puis-je détecter le type d'invocation GET ou POST de mon cgi-bin ? == L'information se trouve dans le champ d'entête du message HTTP. Il s'agit de RequestMethod. == Commment savoir que le message HTTP à lire est fini ? == Le test de fin se basera sur la taille du message qui se trouve dans un champ d'entête du message HTTP. Il s'agit de Content-Lenght. == Comment accéder aux variables d’environnement en Python ? == Tout cgi-bin doit pouvoir s’appuyer sur les paramètres qui lui sont destinés et qui ont été collectés dans la variable d’environnement QUERY_STRING. En conséquence le serveur doit être capable de préparer des variables d’environnement avant de lancer le cgi-bin. Pour obtenir une variable d'environnement avec Python vous pouvez utiliser le module os et la variable environ avec par exemple : import os ... if os.environ.has_key('nom_de_la_cle'): print os.environ['nom_de_la_cle']