7
votes

Os.popen est-il vraiment obsolète à Python 2.6?

la ligne Documentation stipule que os.popen est maintenant obsolète. Toutes les autres fonctions obsolètes augmentent dûment une dépréciation. Par exemple:

>>> import sys
>>> print sys.version
2.6.2 (r262:71600, May 12 2009, 10:57:01) 
[GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu3)]


9 commentaires

Qu'importe? Pourquoi avez-vous besoin de connaître la raison "correcte"? Il est revendiqué en tant que déprécié et sous-processus.Popen est le remplacement. Que devez-vous savoir de plus? Comment améliorer votre code pour le savoir?


Je suppose que des lots et beaucoup de code dépendent de cette fonction.


Cher S.Lott, je sais que ce n'est pas toujours facile pour un haut-parleur anglais non indigène d'être toujours parfaitement clair, et donc je m'excuse si ce que j'écris n'est pas facilement compréhensible. Mais pourriez-vous s'il vous plaît, jolie s'il vous plaît, au moins faire un effort pour lire ma question? Je ne demande pas quelle est la raison. Je demande qui ou quoi ce qui ne va pas: les docs, le code Python publié, ou moi-même dans l'attente que les deux sont cohérents.


@krawyoti: Vous avez demandé "Lequel est le bon?" Pourquoi cela importe-t-il quelle raison est la bonne raison? Comment savoir quelle est la bonne aide? Comment savoir quelle raison est-elle la raison correcte vous aide à résoudre un problème de programmation?


Cher S. Lott, laissez-moi essayer une approche différente. Pourquoi dites-vous que Os.Popen est obsolète? Je pourrais prétendre que les docs sont faux. Seuls popen2, popen3, etc. sont en fait obsolètes, tandis que OS.Popen, qui est directement soulevé de POSIX.Popen n'est pas. Veuillez comparer la ligne 44 avec la ligne 669 dans SVN.PYTHON.ORG/ Voir / Python / Tags / R262 / LIB / OS.PY


@KrawyoTI: Veuillez mettre à jour votre question pour clarifier. Ne pas ajouter de commentaires. Corriger la question. Et veuillez expliquer quel problème de programmation vous rencontrez. Je ne vois aucun de votre code qui est cassé ou ne fonctionne pas.


Cher S.Lott, selon la FAQ, les questions ne doivent pas nécessairement tourner autour du code brisé ou non de travail. Si vous ne voyez pas pourquoi il est important pour la maintenabilité d'un logiciel si une fonction est obsolète, je pense que l'action appropriée est pour vous de poser une question distincte, à laquelle je serais ravi de contribuer à une réponse.


@krawyoti. Si vous avez une question a quelque chose à voir avec la maintenabilité après déprécation, veuillez mettre à jour votre question pour dire ceci. S'il vous plaît mettre à jour votre question. Veuillez indiquer pourquoi "lequel est le bon?" a quelque chose à voir avec la maintenabilité. Je ne peux pas comprendre la question comme demandé.


Je lolis à la conversation dans ces commentaires.


4 Réponses :


4
votes

Une chose que je peux penser est que Os.Popen existe dans Python3, tandis que OS.Popen2 ne le fait pas. Donc, l'un est "plus obsolète" que l'autre et prévu pour la suppression plus tôt de la langue.


1 commentaires

C'est intéressant: non seulement os.popen est toujours là à Python 3.1 mais ce n'est même pas obsolète. Voir docs.python.org/3.1/Library/os.html



5
votes

Voici le PEP .

Deprecated modules and functions in the standard library:

    - buildtools
    - cfmfile
    - commands.getstatus()
    - macostools.touched()
    - md5
    - MimeWriter
    - mimify
    - popen2, os.popen[234]()
    - posixfile
    - sets
    - sha


0 commentaires

3
votes

En attendant, j'ai ouvert un Ticket sur le suivi de la question Python. Je vais garder cette question ouverte jusqu'à ce que le ticket soit fermé.


1 commentaires

Félicitations pour poser une telle question perspicace et aider à pousser cette divergence à la fermeture via des canaux formels. Jusqu'à présent, on dirait que Popen restera autour et obtenir une documentation. Yay!



0
votes

Commands.getstatusoutput l'utilise toujours selon la documentation 2.6.4. < / p>


0 commentaires