Toon posts:

[Python] Commando naar Dos

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb al een groot deel van de python manuel doorpluist en google veel malen geraadpleegd maar ik vind nergens hoe ik een commando naar bv dos kan krijgen en hoe ik de output moet opvangen. In c++ weet ik dat het "system()" is. (al vang je daarmee de output niet op).

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 18-05 09:50

pjvandesande

GC.Collect(head);

Je wilt een stream uitlezen vanuit een console window? Of wil je een commando in een console zetten, dus er naar schrijven?

Verwijderd

Topicstarter
eigenlijk beide, dus ik wil een commando naar dos kunnen sturen bv variable = send_to_dos(''dir") en de output moet dan in die variable komen.

offtopic:
Bestaat er eigenlijk een nederlanse python community site

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 18-05 09:50

pjvandesande

GC.Collect(head);

Wat wil je precies berijken, je kan hier is kijken naar wwat resultaten. Maar waarom een dit opvragen in een dos console? :?

Wat wil je precies berijken?

Verwijderd

In de nieuwe Python (2.4) is er een speciale module met allemaal functionaliteit hiervoor, namelijk de module subprocess (zie hier).

Als je met een oudere versie van Python werkt kun je de functies uit de module os gebruiken. Meer documentatie daarover vind je hier en hier.


offtopic:
En doe me een lol: noem het alsjeblieft geen `DOS'. DOS is dood en begraven, en zit niet meer in de Windows van tegenwoordig. Je hebt het over console programma's, of gewoon over `de console' of `de command-interpreter' als je specifiek cmd.exe bedoelt. Het zijn géén DOS programma's en het is géén MS-DOS prompt.

[ Voor 38% gewijzigd door Verwijderd op 03-01-2005 15:52 ]


Verwijderd

Topicstarter
Thanks OneOfBorg dat zocht ik dus. (Ik gebruikte dus de foute zoektermen op google).

@ questa : Wat ik wil bereiken is zoiets als ssh. Ik log met men client in op de server pc waardoor ik commandos kan sturen naar command.com en de server stuurt dan de output (van die command) terug naar de client. Bijvoorbeeld als ik "dir" stuur met die client moet de server dan die command naar command.com sturen en de output (een filelist) dan terugsturen naar de client.

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 18-05 09:50

pjvandesande

GC.Collect(head);

Is het dan niet slimmer, sneller, netter en veiliger om dit niet via command.com te doen? Als ze client een functie wil voor een dirlist kun je die toch beter zelf maken.

Verwijderd

Verwijderd schreef op maandag 03 januari 2005 @ 15:48:
Bijvoorbeeld als ik "dir" stuur met die client moet de server dan die command naar command.com sturen en de output (een filelist) dan terugsturen naar de client.
Ik neem aan dat je voor WinNT (2000, XP...) ontwikkelt en niet voor 9x. Dan kun je beter cmd.exe gebruiken, ipv. command.com.

En afgezien van het feit dat als je `zoiets als SSH' wil, je dan beter gewoon SSH kan gebruiken (:+), is hier een stukje voorbeeldcode dat het gebruik van popen laat zien:

Python:
1
2
3
4
import os

(stdin, stdout) = os.popen2('dir')
print stdout.read()


Simple as that. (popen2 gooit het commando door de command-line interpreter heen (cmd.exe dus), dus dat hoef je zelf niet meer te doen).

Let er wel op dat als je van directory verandert met `cd', dat niet tussen verschillende executies van de commando's onthouden wordt. Als je wilt kunnen directory-switchen zul je dat met de hand moeten gaan bijhouden.

[ Voor 14% gewijzigd door Verwijderd op 03-01-2005 16:00 ]

Pagina: 1