|
|
Forum général Python
Rubriques :
812
Réponses :
2349
Vous devez être un membre enregistré pour contribuer sur ce forum.
Inscrivez-vous maintenant.
Tout message hors sujet sera supprimé, pour le bien de tous.
Les messages à caractère publicitaires ne sont pas autorisés non plus.
| Sujet |
Créateur |
Réponses |
Dernière modification |
python et controle du clavier
Bonjour
Je suis sous Linux.
Je voudrais envoyer par programme un appui sur la touche Num Lock.
J'ai trouvé des choses se rapprochant avec Python sous Windows (PyHook, pythoncom...), mais rien sous Linux.
Merci pôur toute idée.
|
palm6174
|
0 |
09/05/2008 13:56 |
Utilisation des opérateurs Booléens
Bonjour,
Je souhaite faire des tests sur plusieurs variables en utilisant les opérateurs logiques.
En remplaçant :
[code]if eq != None :
if es1 == None :
if es2 == None :
if es3 == None :
if es4 == None[/code]
par :
if (ET(eq!=None;es1=None;es2=None;es3=None;es4=none)) alors action
comment coder cette dernière partie en Python ?
Merci
|
Laurent
|
5 |
08/05/2008 15:30 |
Structure Pere Fils Arborescence
Bonjour,
Je souhaite transformer une structure de donnée venant d'Excel (désolé pour la présentation):
N° Eq Ea Eb Ec Ed
1 Eq1
2 Ea2
3 Ea3
4 Eb1
5 Eb2
6 Ea4
7 Eb3
8 Ec1
....
et le transformer en :
Pere Fils
1 2
1 3
3 4
3 5
1 6
6 7
7 8
....
c'est mon premier gros script et je ne sais pas comment faire
Merci
|
Laurent
|
9 |
08/05/2008 14:36 |
Aide sur les Threading
Bonsoir,
Je suis en train d'essayer d'afficher en temps réel l'avancer d'un telechargement en utilisant un thread.
Mon probleme est que il n'afficher que le dernier bloc donc cela laisse penser il que n'actualise que le label une fois fini.
Voici ce qui appel le thread :
je lui passe en premier le liens du fichier, en 2eme le nom du fichier et en troisieme mon label.
t = DonwloadFile(self.url[0],"/tmp/fichier",self["info2"])
t.start()
et voici la class :
class DonwloadFile (threading.Thread) :
def __init__(self,url,fichier,label) :
threading.Thread.__init__(self)
self.url = _a
self.fichier = _b
self.label = label
self.run()
def run(self) :
urllib.urlretrieve(self.url,self.fichier,reporthook = self.onHook)
def onHook(self,nb_blocs, taille_bloc, taille_fichier):
self.label.setText(str(taille_fichier) + " - " + str(nb_blocs) + " - " + str(taille_bloc))
merci d'avance pour votre aide
|
Estopa
|
4 |
07/05/2008 15:08 |
Supprimer les espaces dans fichier
Bonjour à tous,
Je suis complètement nouveau en programmation et en Python. Je souhaite faire un programme pour me modifier le contenu d'un fichier cvs. J'ai utilisé un morceau de code trouvé sur ce site, mon problème est le suivant : je souhaite supprimer des "espaces".
Voici la structure du fichier :
Carrelage Faïence;CARRELAGE – FAIENCE;- Contrôle visuel de l’état des ouvrages;0,5;1;0,5
je souhaite remplacer : ";- "(10 espaces) par ";" mais le code suivant ne lit pas les espaces.
Voici le code :
[code]fichier=open("D:\Gammes_Preventive_v1.csv", "r")
contenu=fichier.read() #Lit tout le fichier d'un coup
index = { ';- ' : ';' } #Remplacer ;- par ;
for cle in index:
contenu=contenu.replace(cle, index[cle])
print contenufichier=open("D:\Gammes_Preventive_v1.csv", "r")[/code]
Merci
|
Laurent
|
12 |
07/05/2008 08:20 |
Comment optimiser son code ? Quels outils ?
Bonjour,
Je suis nouveau ici, je salue tout le monde !
Je suis en train de coder un petit logiciel qui permet de résoudre un petit jeu suivant des règles simples. Le but est de prendre en main Python, me confronter à des problèmes réels, les résoudre, etc... le logiciel en soi n'est pas très utile...
Voilà l'objet de ma question :
Le logiciel doit effectuer des milliers de fois quelques instructions (surtout des if) pour atteindre la solution optimale du jeu, c'est long, très long même sur certains tableaux. En fait chaque itération est plus longue que la précédente (pour simplifier, l'itération 1 fait 36 fois l'opération, l'itération 2 : 36x36, l'itération 3 : 36^3,..., l'itération n : 36^n...) or pour certains tableaux il faudrait sûrement atteindre l'itération 10 pour le résoudre de façon optimale !!
J'ai déjà réussi à optimiser et à diviser le temps de calcul par 20 (oui, mon code était vraiment brut au départ !) mais j'aimerai voir jusqu'où on pourrait arriver (sachant que ce n'est pas vraiment vital... mais c'est sûrement très instructif).
Pour l'instant j'atteins la fin l'itération 3 en environ 1 seconde, et la fin de l'itération 4 une 100ène de secondes... je n'ai jamais essayé d'aller jusqu'à la fin de l'itération 5...
Pour l'instant pour trouver les morceaux de code qui prennent le plus de temps j'utilise en gros ceci :
[code]import time as origtime
[...]
debut = origtime.time()
....mon bout de code...
temps = origtime.time()-debut
[/code]
ça fonctionnait à peu près bien pour des gros bouts de code mais maintenant que je rentre dans le détail j'arrive à la limite du système (le temps que met python à enregistrer le temps devient non négligeable devant le temps d'exécution du bout de code lui même !). Et en plus ça devient pas terrible à gérer, des appels de calcul du temps un peu partout, etc...
[strong]Ma question est donc :[/strong] Existe-t-il des outils permettant d'analyser l'exécution d'un code python pour en extraire certaines données comme les temps d'exécution de chaque instruction, le nombre de fois qu'elles sont exécutés, etc... ?
[strong]Question subsidiaire :[/strong] comment faire pour que le programme ne freeze pas pendant le calcul ? J'aimerai animer une petite barre de progression et aussi permettre d'interrompre le calcul autrement que par un Ctrl+C...
Merci pour tout !
PS : le programme est graphique et utilise pyGTK, je suis sous linux, j'utilise python 2.5.2
|
Strash
|
1 |
04/05/2008 00:22 |
Optimisation
Bonjour, Petite question sur l'optimisation de code python : Au lieu de : def create_uri(environ): if environ['QUERY_STRING'] == '': uri = 'http://127.0.0.1' + environ['PATH_INFO'] else: uri = 'http://127.0.0.1' + environ['PATH_INFO'] + '?' + environ['QUERY_STRING'] return uri mettre : def create_uri(environ): uri = 'http://127.0.0.1'' + environ['PATH_INFO'] if environ['QUERY_STRING'] != '': uri = 'http://127.0.0.1'' + environ['PATH_INFO'] + '?' + environ['QUERY_STRING'] return uri
Merci pour votre réponse Flo
|
fcarlier
|
6 |
01/05/2008 18:39 |
Traitement video sous python, avec pygtk
Bonjour à tous et à toutes.
Voilà un sujet bien épineux. Le net regorge d'information, mais là... le néant.
Je suis développeur qui contribue à l'enrichissement de python, et je suis axé particulièrement sur l'utilisation de la Gui pygtk.
Mon problème est le suivant :
Je dois réaliser une application de traitement vidéo. Je voudrais donc à la fois lire la vidéo, mais réussir à extraire la frame actuelle de la lecture, tout en donnant la possibilité à l'utilisateur d'accélerer la navigation globale(à travers un seek donc).
La référence est pymédia...
Mais voilà, leur documentation est frustrante...Elle se contente uniquement de renvoyer vers des exemples tout fait, où on ne comprends même pas à quoi correspond telle ou telle fonction, exempté de commentaire explicite... Je n'ai pas trouvé d'application l'utilisant, qui aurait pu être bon à étudier.
J'en reviens donc à vous demander de l'aide.
Dans un premier temps, existeraient-ils des tutoriaux/applications que j'aurais raté ?
Puis, comment embarquer la vidéo avec pygtk(car pymedia utilise pygame pour l'afficher) ?
Sinon, existe t-il une librairie de traitement video équivalente(supportant le format vob) ?
Apparement j'ai peut être comme solution d'utiliser pyffmpeg, mais je me vois mal extraire temporairement toutes les frames du film pour les assembler par la suite (processus long et couteux en espace).
Qu'en pensez-vous ?
J'attends avec impatience vos précieux conseils.
Merci d'avance pour votre aide.
loupmagic.
|
loupmagic
|
9 |
22/04/2008 22:07 |
Python et Cherrypy
Bonjour à tous,
J'ecris un site web en Python en utilisant cherrypy.
Je souhaiterai savoir comment il est possible d'appeller une fonction python (qui est est point d'entrer web) avec un nombre de parametres inconnus ?
Je possede en effet un formulaire completement dynamique et lorsqu'il est valide, je souhaiterai pouvoir envoyer toutes les valeurs a mon autre page (un autre point d'entree). Cependant il est necessaire de definir les fonctions avec leur parametres au prealable!
Quelqu'un a une idee ?
merci
|
jmariette
|
0 |
18/04/2008 13:24 |
Test Python
Bonjour à tous,
J'ai effectué ceci en python mais je suis sûr que ce que j'ai fait n'est pas optimisé. Je voudrais donc savoir comment vous vous y prendriez pour réaliser ceci de manière optimale.
http://ccserv.adm.ehime-u.ac.jp/ICPC/problems/domestic/d2003/problems/B.html
|
iUser59
|
2 |
04/04/2008 13:31 |
pygtk treeview, combiner des lignes d'image avec des ligne de texte
Bonjour
Je souhaite pouvoir insérer dans une treeview des lignes contenant soit du texte, soit une image + du texte. J'ai donc créer une CellRenderText et une CellRenderPixbuf que je met dans la même TreeViewColumn.
Le problème est que je n'arrive pas à superposé ceux-ci (il y a une sous-colonne contenant le texte et une sous-colonne contenant les images
[img]http://jopc.free.fr/ftp/images/2008-03-26_-_16-34-21_-_screenshot2.png[/img]
Le logo ubuntu devrais se trouver sous 2+2=4)
Autrement dit et en ce basant sur un bout de code concret (l'exemple de le traduction de la doc en français http://mcclinews.free.fr/python/pygtktutfr/exemples/treeviewcolumn.py , aperçu du résultat : http://mcclinews.free.fr/python/pygtktutfr/sec-CellRenderers.html )
* Ligne 45 je remplace "gtk.STOCK_NEW" par "None"
Et je voudrais comme résultat que "Nouveau" soit aligné complètement sur la gauche (et pas avec les autres textes)
|
jonas
|
4 |
02/04/2008 11:15 |
Récupérateur d'urls a partir de google..
Bonjour a tous,
J'ai un petit projet qui consiste a utiliser dans mon application python un mot ou groupe de mots a injecter dans google et a simuler les clics des liens proposes par google pour un traitement exterieur des 50 premieres pages offertes par google.
Mon programme actuel est dores et deja developpe pour les traitements exterieurs (gestion de l'url lorsqu'elle est connue), mais je bloque sur le concept de faisabilite sur la partie injection de mots et simulations de click de l'url proposee que je dois injecter dans mon programme actuel.
Comment procederiez vous dans un cas similaire?
Merci pour vos idees et votre aide
Marc
|
ph_biohazard
|
3 |
21/03/2008 12:24 |
Dictionnaire : comment retourner la valeur d'un élément ???
Bonjour,
Dans une ZPT, j'aimerais afficher la valeur d'une clé d'un élément (toujours le même) d'un dictionnaire.
En fait, il s'agit d'un forum et de posts : le premier à le niveau (level) 1 les réponses le niveau +1 et je voudrais afficher dans toutes les réponses le titre (title) du post de niveau 1.
Je récupère cela :
[code][{'level': 1, 'url': 'http://localhost:8103/<site>/forum/discussions/medical/question/post200803189813606083', 'title': 'Aaaaaaaa', 'author': 'medical1', 'created': DateTime('2008/03/18 14:29:52.454 GMT+1'), 'anonymous': False, 'path': '/<site>/forum/discussions/test/question/post200803189813606083',
'children': [{'level': 2, 'url': 'http://localhost:8103/<site>/forum/discussions/test/question/post200803189813606083/post200803184195609265', 'title': 'Re: Aaaaaaaa rep med2', 'author': 'test2', 'created': DateTime('2008/03/18 15:27:31.530 GMT+1'), 'anonymous': False, 'path': '/<site>/forum/discussions/test/question/post200803189813606083/post200803184195609265',
children': [{'level': 3, 'url': 'http://localhost:8103/forumresurgences/resurgences/discussions/medical/question/post200803189813606083/post200803184195609265/post200803183553798430', 'title': 'Re: Re: Aaaaaaaa rep med2', 'author': 'medical2', 'created': DateTime('2008/03/18 15:42:48.520 GMT+1'), 'anonymous': False, 'path': '/forumresurgences/resurgences/discussions/medical/question/post200803189813606083/post200803184195609265/post200803183553798430',
'children': [{'level': 4, 'url': 'http://localhost:8103/forumresurgences/resurgences/discussions/medical/question/post200803189813606083/post200803184195609265/post200803183553798430/post200803185991220961', 'title': 'Re: Re: Re: Aaaaaaaa rep med2', 'author': 'medical2', 'created': DateTime('2008/03/18 15:47:00.167 GMT+1'), 'anonymous': False, 'path': '/forumresurgences/resurgences/discussions/medical/question/post200803189813606083/post200803184195609265/post200803183553798430/post200803185991220961',
'children': [{'level': 5, 'url': 'http://localhost:8103/forumresurgences/resurgences/discussions/medical/question/post200803189813606083/post200803184195609265/post200803183553798430/post200803185991220961/post200803186875997909', 'title': 'Re: Re: Re: Re: Aaaaaaaa rep med2', 'author': 'medical2', 'created': DateTime('2008/03/18 15:48:36.550 GMT+1'), 'anonymous': False, 'path': '/forumresurgences/resurgences/discussions/medical/question/post200803189813606083/post200803184195609265/post200803183553798430/post200803185991220961/post200803186875997909'}]}]}]}][/code]
Donc dans la ZPT, je voudrais écrire un truc du genre :
<div tal:content="string:Titre de la discussion : ${post_item.<je ne pas comment récupérer le post de level == 1>.title}"/>
Je ne sais pas récupérer le valeur de la clé 'title' du premier élément (level 1) : j'ai essayé "post_item[0].title" et d'autres choses sans succès...
Merci pour vos éclaircissements,
Thierry
|
tcr
|
4 |
21/03/2008 10:25 |
Problème "socket no longer exists"
Bonjour,
Je suis en train d’apprendre le python. À l’école, on utilise IDLE, j’essaye donc de l’installer chez moi.
Je vais donc sur http://www.python.org/download/ et je télécharge "Python 2.5.2 Windows installer" (je possède Micro$oft Windows XP édition familiale, désolé).
Tout semble bien se passer (pas de message d’erreur).
Je démarre IDLE et là j’obtiens ce message :
IDLE internal error in runcode()
Traceback (most recent call last):
File "C:\Python25\lib\idlelib\rpc.py", line 235, in asyncqueue
self.putmessage((seq, request))
File "C:\Python25\lib\idlelib\rpc.py", line 334, in putmessage
raise IOError, "socket no longer exists"
IOError: socket no longer exists
Du coup je ne peux rien faire. Si quelqu’un sait résoudre ce problème, d’avance merci.
PS : je possède un ordinateur portable avec un processeur AMD Sempron, aurais-je du choisir l’installation de "Python 2.5.2 Windows AMD64 installer" ?
|
VIGNERON
|
1 |
16/03/2008 13:40 |
Dialoguer avec Postgresql
Bonjour
Je voudrais utiliser Postgresql 8.3 avec Python 2.5.
Python à besoin d'un connecteur pour dialoguer avec Postgresql. Apparament Psycopg semble le plus
adapté, mais quel version doit on prendre dans ce cas là.
Je suis sous windows XP.
Quel sera l'ordre d'installation de ces différents programme?
Merci pour vos réponses éclairées.
|
Malorob
|
1 |
10/03/2008 11:08 |
Python et le "calcul financier"
Bonjour,
Existe t il une sorte de "Python financial tool" ou une bibliothèque Python pour aider au développement d'applications financière?
Merci
Ju
|
Lucci
|
7 |
07/03/2008 11:03 |
confusion variable / fonction ?
voila je débute en python en suivant le cours pdf de swinnen , et je fait un script pour résoudre l'exercice 5.06 mais celui ci ne fonctionne pas , je vais voir la solution , et le script de solution est identique , mais fonctionne ..... je ne comprend pas ... j'ai saisi la fonction [code]ch[a][/code] pour récupérer un caractère d'une chaine de caractère mais il semblerait qu'il le considère comme une variable ... il me dit :
[code]
me@robby:~/python.swinnen$ python comptage.0.2.py
Traceback (most recent call last):
File "comptage.0.2.py", line 6, in ?
if ch[a] == d:
NameError: name 'ch' is not defined
[/code]
mon script :
[code]
a , b , c , d = 0 , 0 , "Stephanie" , "e"
while a <= len(c): # Du premier jusqu'à la dernière lettre ,
if ch[a] == d: # (tu compares) Et si en comparant ,
b = b + 1 # (tu trouves un caractère identique ) tu le compte (ajoute un nombe à la liste )
a = a + 1 # continue ta comparaison avec le deuxieme , troisieme etc .... refait la meme chose
print b # affiche moi le nombre de lettres identiques trouvés
[/code]
alors que la solution est :
[code]
#! /usr/bin/env python
# -*- coding: Latin-1 -*-
# 5.7. Écrivez un script qui compte le nombre d'occurrences du caractère « e » dans une chaîne.
ch = raw_input ('entrez la phrase: ') # phrase dans laquelle il faut trouver le caractère
cr = raw_input ('entrez la lettre: ') # caractère a trouver
i = 0 # indicateur de la position du caractère comparé
z = 0 # compteur nombre de fois caractère
while i < len(ch): # boucle : tant que le compteur est inférieur à la somme des caractère continu opération
if ch[i] == cr: # compare si le caractère position x ( exemple 3 ) de la liste est égale au caracère demandé
z = z + 1 # si vrai alors ajoute un au compteur de caractère
i = i + 1 # ajoute un pour pouvoir aller au caractère suivant
print " il y a ", z , "fois le caractère",cr, "dans " , ch # imprime résultat
[/code]
Pouvez vous m'aider ?
ps : je viens de remarqué que le forum ne gère pas les crochets :( donc c'est ch crochet ouvert a crochet fermé
|
eastwind
|
4 |
04/03/2008 10:34 |
Encodage sous win
Bonjour,
J'ai un soucis d'encodage de caractère.
voici le genre de caractère qui sort du script :
[code]arrivé le : 13 décembre 2007 à 16:19[/code]
L'encodage est en UTF-8.
J'ai cherché mais je ne sais pas résoudre ce problème.
Merci du coup de pouce.
|
Piktux
|
2 |
03/03/2008 11:27 |
Interface Sexy avec Clutter
Bonjour à tous,
J'ai le projet de créer une interface plus sexy pour Freevo, un logiciel media center écrit en Python et tournant sous Linux.
Pour cela j'utilise la lib PyClutter.
Mon premier problème est que la documentation est incomplète pour pyclutter (un peu plus pour Clutter, mais il faut adapter...). Es ce que vous auriez plus d'informations sur cette lib?
Second problème, j'ai une fonction pour gérer l'opacité de mon objet, mais lorsque je rentre les paramètre d'opacité en début et fin du mouvement, j'ai une erreur me disant que mes arguments ne sont pas de type gint ou gdouble (selon la fonctin). Pourtant je mets une valeur genre 20 ou 60...
Une idée?
Je laisse la page de doc de Clutter (et non pyClutter), sur cette fonctions. j'ai le même problème avec la fonctions d'echelle, en fait seule BehaviourPath et behaviourEllipse fonctionnent....
http://clutter-project.org/docs/clutter-ClutterBehaviourOpacity.html
Merci de votre aide
P.S.: j'utilise python 2.5, avec PyClutter 0.5.
|
cinpou
|
1 |
29/02/2008 14:52 |
problèmes avec les dates
Bonjour,
Soucis avec la conversion de timestamp venant d'un fichier :
[code]
i = 0
dates = []
noms = []
for file in glob.glob(path):
dat = os.stat(file)[stat.ST_MTIME]
dat = datetime.datetime.fromtimestamp(dat)
dat = dat.strftime("%d %b %Y à %H:%M")
dates.append(dat)
file = file.split('\\')
noms.append(file[2])
i = i + 1
return i, noms, dates
[/code]
Le premier dat me retourne bien les timestamp des fichiers mais la suite du code pour le formatage ne fonctionne pas.
Je ne vois pas la solution.
Merci de votre aide.
|
Piktux
|
4 |
29/02/2008 13:56 |
Modifier une variable d'environnement (ex. LD_LIBRARY_PATH)
Bonjour,
j'aimerais pouvoir modifier lors d'une session python la variable d'environnement LD_LIBRARY_PATH et que cette modification soit immédiatement prise en compte (de façon à ce que l'import d'un module lui succédant puisse accéder aux bonnes librairies).
|
tylerdurden
|
2 |
28/02/2008 23:43 |
nombre de jours ouvrés entre 2 dates
Bonjour,
j'ai besoin de déterminer le nombre de jours ouvrés (jours de la semaine hors samedi et dimanche et jours fériés)entre deux dates données.
Je n'ai rien trouvé en standard dans les fonctions python.
Si je fais le programme moi même, j'ai au moins besoin du calendier.
Comment puis je faire ?
Merci
|
awalter1
|
4 |
28/02/2008 07:43 |
Info: une calculatrice graphique facilement extensible
Bonjour,
J'avais entrepris il y a quelques semaines la réalisation d'une calculatrice graphique extensible en python, et ce forum m'a aidé à 2 reprises.
Pour ceux que ça intéresse, le résultat est là:
http://linux.jpvweb.com/mesrecetteslinux/doku.php?id=calculatrice
J'ai découvert à cette occasion pas mal de possibilités étonnantes de python, et cela donne un outil bureautique assez pratique (je l'ai d'abord fait pour moi), qui de plus fonctionne de façon identique (et c'est le même code) sous Windows et sous Linux:
- calculs courants
- calculs trigonométriques
- calculs en entier long
- calculs de conversion décimal-> binaire et binaire -> décimal, y compris de binaires signés avec des mots de longueur quelconque
- calculs arithmétiques: pgcd, ppcm, décomposition en facteurs premiers, recherche de nombres premiers, ...
- calculs d'analyse combinatoire: permutations, combinaisons, arrangements
- calculs de probabilité: loi binomiale, hypergéométrique, probabilité gaussienne
- calculs de crédits bancaires
- calculs de dates et d'heures: heure de l'ordinateur, heure exacte par consultation d'un serveur NTP, jour de la semaine, différence entre 2 dates, dates de Pâques, jours fériés France, ...
Bon, je ne suis toujours pas expert en python (c'est mon 1er programme), et ce n'est probablement pas le meilleur code python qu'on ait écrit, mais ça fonctionne assez bien. Je reste cependant à l'écoute des éventuelles critiques et propositions.
Je pense que le moteur de la calculette est assez stable maintenant, et que les développements suivants concerneront surtout de nouvelles fonctions et de nouveaux modules.
En espérant que ça sera utile à quelqu'un (et qu'il s'amusera autant que moi :-) )
Tyrtamos
|
tyrtamos
|
7 |
22/02/2008 15:47 |
diagramme de classe
Bonjour,
Je cherche un logiciel "free" qui fasse du "reverse" à partir d'une application python et produise un diagramme de classes.
Je suis sous unix (HP-UX).
J'avais essayé DesignDomain mais ce dernier est lié à py2exe qui travaille pour un environnment windows. J'ai vite été perdu !
Si quelqu'un a une autre solution ...
merci
|
awalter1
|
2 |
14/02/2008 09:36 |
Socket en python
Bonjour a tous,
Je suis face à un épineux problème et je vais encore une fois solliciter votre aide.
[size]Le background :[/size]
Je travaille sur un site web écrit en python hébergé par un serveur apache + mod_python sur une machine linux.
Quelque part dans mon code, j'ouvre un nouveau processus qui est destiné à continuer à tourner tout le temps (demon).
Le demon est donc un processus fils de la thread apache qui execute mon code python et, par consequant, est proprietaire de l'utilisateur www-data sur la machine unix.
J'ai pris soin de "zombifier" le demon pour qu'il ne soit pas tué dés que la thread apache s'arrete .
Jusqu'ici tout ce passe pour le mieux.
[size]Le problème :[/size]
Le problème arrive quand j'essaye de relancer apache alors que le demon qu'il a lui même lancé tourne toujours.
Le symptôme étant le suivant : apache me dit qu'il ne peut pas ouvrir une socket sur le port 80.
C'est a priori très étrange vu que apache est le seul à utiliser le port 80 et que, quand j'essaye de le redemarrer, il me dit ca alors qu'il est déjà éteint.
Je remarque également que si je coupe le demon, apache veut bien redemarrer. C'est là aussi tres étrange car le demon n'ouvre ni n'utilise le port 80 à aucun moment.
[size] L'origine du problème :[/size]
J'ai mis un bon moment a comprendre ce qu'il se passait et j'ai enfin trouvé :
Lorsque je lance le demon dans mon code python (exécuté par la thread apache), celui ci hérite de toutes les propriétés du processus père (sockets ouverte, fichiers ouverts, pipes... etc).
Et effectivement, lorsque je me promène dans /proc/PID_de_mon_demon/fd, j'y trouve effectivement une multitude de file descriptor ouverts qui correspondent à ceux qu'utilise apache (le file descriptor pour le fichier du log du serveur est particulièrement reconnaissable).
Ce comportement est, sauf erreur de ma part, immuable et typique de la gestion des processus sous unix.
[size] La solution au problème :[/size]
Je me retrouve maintenant a savoir exactement d'où vient le problème, il ne me reste plus qu'a le régler.
Je veux donc fermer la socket représentant la connexion sur le port 80 entre mon "fork" et mon "execvp" dans le processus fils.
C'est là que je bloque et que je vous demande de l'aide car je ne trouve pas le moyen de fermer cette socket.
Je ne connais pas a priori son numero de file-descriptor et je ne sais pas comment le trouver.
[strong]Les pistes que j'ai exploré :[/strong]
- J'ai d'abord pensé à aller le chercher à la main dans /proc/PID_du_demon/fd mais ce dossier n'est disponible qu'a l'utilisateur root et donc n'est pas lisible depuis du code lancé par apache.
- Puis j'ai essayé de trouver un autre moyen de lister tous les file-descriptor ouvert par le processus mais sans succés. Aurais-je mal cherché ?
- J'ai aussi chercher du coté de mod_python, il est peut etre possible de récuperer le socket apache depuis ce module mais encore une fois ne j'ai pas trouvé. Nottons que "J'ai pas trouvé" ne signifie pas "C'est pas possible" ;)
Je suis bien évidement ouvert à toute solution qui aurait l'effet désiré :)
En espérant avoir été suffisamment clair sur la nature de mon problème,
restant a votre disposition pour tout complément d'information,
et en vous remerciant d'avance pour vos réponses,
Xavier
---
Le sage ne dit pas ce qu'il sait, le sot ne sait pas ce qu'il dit
|
psycofdj
|
0 |
11/02/2008 20:30 |
win32com.client probleme...
Bonjour a tous,
Je tiens a remercier Pacificator qui m'a bien aider pour ses informations sur le win32com.client pour la gestion des fichiers word.
Rappel du projet :
Je souhaitais faire un copier de documents word dont la structure macros est corrompue et creer un nouveau document, de le coller et de le sauvegarder dans un repertoire precis.
Cette fonction fonctionne a merveille.
Mon pb est que j'ai un comportement tres etrange :
Lorsque je lance mon script, certains fichiers cherchent a ouvrir un modele exterieur et donc je me retrouve avec une erreur :
1/ Microsoft Visual Basic : Erreur de compilation
2/ S'affiche une fenetre Microsoft Visual Basic avec le code et une demande de debugger.
3/ J'ai ensuite une erreur Python :
pywintypes.com_error: (-2147352567, "Une exception s'est produite.", (0, 'Microsoft Word', "Impossible d'ouvrir ce mod\xe8le de document.\r (C:\\temp\\virus\\CL_DVD.dot)", 'C:\\Program Files\\Microsoft Office\\OFFICE11\\1036\\wdmain11.chm', 24660, -2146823108), None)
Ma question est relativement simple:
Dans ma ligne :
[code]
doc=wdapp.Documents.Open(FileName=fullpath, ConfirmConversions=0, ReadOnly=0,AddToRecentFiles=0,PasswordDocument="", PasswordTemplate="",Revert=0,WritePasswordDocument="",WritePasswordTemplate="",Format=0,Encoding=949)
[/code]
Est-ce que je pourrais passer un argument de plus pour ne pas prendre en compte les scripts des documents word qui pourraient s'executer automatiquement et donc perturber mon process de copier/coller?
Je vous remercie pour votre aide
Cordialement
Marc
|
ph_biohazard
|
1 |
05/02/2008 11:47 |
Coloration Syntaxique
Bonjour,
je souhaitrais fabriquer un petit éditeur de texte avec coloration syntaxique qui me servirait dans un projet utilisant des scripts. Mon problème est assez simple. Comment afficher un texte coloré modifiable par l'utilisateur dans un environnement wxPython ou pyGTK ? Toute information me conviendrait.
|
projetmbc
|
2 |
30/01/2008 11:20 |
lancer une application avec spawn_async
Bonjour,
j'ai quelques soucis lors du lancement de certaines applications.
J'utilise la commande suivante:
[code]p = gobject.spawn_async(command,flags=gobject.SPAWN_DO_NOT_REAP_CHILD | gobject.SPAWN_SEARCH_PATH)[/code]
Normalement "command" doit pouvoir lancer n'importe quoi et c'est ce qui se passait pour la plupart de mes applications.
Cependant, la commande suivante n'est pas comprise :
[code]remsh rekkon -l runesc "DISPLAY=display:0.0 /usr/bin/xterm " & [/code]
Bien sur cette commande se lance en faisant un copier/coller dans un terminal, elle est donc correcte.
mais via mon code j'obtiens l'erreur suivante :
[code]launch PVT= ['remsh rekkon -l runesc "DISPLAY=display:0.0 /usr/bin/xterm " &']
Traceback (most recent call last):
File "/home/opeint/IPAS/ACE2008A/IPAS/NESU/HMI/main.py", line 1013, in MainLaunchComponent
pid = pv.run(command)
File "/home/opeint/IPAS/ACE2008A/IPAS/NESU/HMI/runcomponent.py", line 31, in run
p = gobject.spawn_async(component_command,flags=gobject.SPAWN_DO_NOT_REAP_CHILD | gobject.SPAWN_SEARCH_PATH)
gobject.GError: Failed to execute child process "remsh rekkon -l runesc "DISPLAY=display:0.0 /usr/bin/xterm " &" (No such file or directory) [/code]
je dois reconnaitre que je n'en comprends pas la cause;
merci de vos suggestions
|
awalter1
|
1 |
28/01/2008 16:48 |
Copier/coller d'un document...
Bonjour a tous,
Je suis a la recherche d'une fonction ou script qui permet de faire du copier/coller du contenu texte de fichiers word presents sur un disque.
Chaque nom de fichier ou s'est fait le copier/coller doit generer le meme nom du fichier original mais avec une extention .sav
J'ai trouve sur le net des techniques, mais le fichier original doit etre lance par word..ce qui ne m'arrange pas trop puisque j'ai environ 7000 fichiers a faire.
Merci pour vos conseils, aides
Marc
|
ph_biohazard
|
1 |
25/01/2008 18:01 |
Problème de lecture d'un entête WAVE
Bonjour,
je cherche à lire un fichier wave afin de le mettre sous forme vectorielle et procédé à du traitement de signal.
En cherchant de-ci de-là, j'ai trouvé différents documents décrivant la structure de l'entête d'un WAVE et les infos qu'il contient. Mon problème se situe au niveau de la lecture du dit fichier, disons que je travaille avec chimes.wav (un bête fichier son de windows...).
si je fais :
>>signal=open('chimes.wav','r')
>>signal.read(4)
'RIFF' # ce qui est OK
>>s=signal.read(1)
>>s
'\xd8'
#le problème étant que devrait être un hexadécimal noté '0xd8'
#comme s[0] me donne aussi '\xd8', je ne sais pas bien comment remplacer le \ par un 0
#de plus, il arrive que la réponse ne soit pas un hexadécimal mais le symbole ascii correspondant:
#par exemple:
>>signal=open('tada.wav','r')
>>signal.read(4)
'RIFF' # ce qui est OK
>>s=signal.read(1)
>>s
'T'
Je suppose qu'il doit y avoir un problème de formatage (peut être un argument à ajouter à signal.read( ) pour spécifier le
type de résultat attendu ?
J'ai essayé les même manipulations en utilisant
signal=open('chimes.wav','rb')
ainsi que le module wave de python, mais le problème persiste.
J'ai aussi une fichier wave non tiré de windows, mais là encore le problème persiste.
Si quelqu'un à une idée (ou deux..)
Merci,
Elnycko
|
elnycko
|
2 |
25/01/2008 12:45 |
|