abcd423417984 Skrevet 14. oktober 2008 Del Skrevet 14. oktober 2008 Hei La oss anta at jeg har et python-script som skal kjøre en rekke kommandoer. Dette er ganske straight forward. Problemet er bare at istedenfor at disse programmene tar input som parameter så _spør_ de bruker om input. Ved request om input henger programmet til den mottar input+linjeskift. Er det noen måte jeg ved hjelp av python automatisk kan fylle ut slike input requests? Jeg har en anelse om at løsningen innebærer pipes, men dessverre kan jeg ikke nok til å vite helt hvor jeg skal starte. eksempel: "skriv inn navn: " <-- henger her til bruker skriver input og trykker enter Takker så mye for evt svar! Lenke til kommentar
steingrim Skrevet 14. oktober 2008 Del Skrevet 14. oktober 2008 Du trenger ikke Python til dette, bruk redirect av input i shellet ditt. I bash bruker du < til input og > til output. Så hvis du har kommandoene i en fil 'input' kan du kjøre: python mittscript.py < input Lenke til kommentar
abcd423417984 Skrevet 14. oktober 2008 Forfatter Del Skrevet 14. oktober 2008 Du trenger ikke Python til dette, bruk redirect av input i shellet ditt. I bash bruker du < til input og > til output. Så hvis du har kommandoene i en fil 'input' kan du kjøre: python mittscript.py < input Hei Det er en del av et større python script som først ber brukeren om input, for så å bruke denne til å kjøre en rekke andre kommandoer. Hensikten er å slippe å skrive inn samme input ganger til forskjellige kommandoer. Derfor blir det ikke så enkelt å bare pipe det på måten du beskriver. Videre ber hver kommando om flere inputs (og blocker hver gang). Lenke til kommentar
steingrim Skrevet 14. oktober 2008 Del Skrevet 14. oktober 2008 Videre ber hver kommando om flere inputs (og blocker hver gang). Det har ingenting å si, skriv første kommando på første linje, andre kommando på andre linje osv. Men hvis du etter litt automatisk inputting plutselig vil gjøre det manuelt så fungerer det vel ikke, nei. Lenke til kommentar
explosif Skrevet 16. oktober 2008 Del Skrevet 16. oktober 2008 (endret) Du kan bruke os.popen2, men tviler på at den gir deg hva du er ute etter. stdin, stdout = os.popen2('python dittscript.py') stdin.write('input') stdin.close() for line in stdout.readlines(): print line Endret 17. oktober 2008 av explosif Lenke til kommentar
Cucum(r) Skrevet 23. oktober 2008 Del Skrevet 23. oktober 2008 Tenker du kanskje på raw_input ? import getpass name = raw_input('Ditt brukarnamn:') pass = getpass.getpass('Passord:') print 'Hei, %s! Ditt passord er %s' % (name, pass) Lenke til kommentar
abcd423417984 Skrevet 25. oktober 2008 Forfatter Del Skrevet 25. oktober 2008 (endret) Nei, jeg tenkte på explosif sitt forslag. Det ville fungert hvis det ikke var for at programmet jeg ønsket å gjøre det på (cryptsetup) ikke tåler input fra script...Skulle lage et minimalistisk brukergrensesnitt for å endre encryption password på en luks-kryptert disk. Fant dessverre ingen god måte å omgå den begrensningen og la derfor hele prosjektet på is. Synd ettersom luks-kommandoene er vanvittig tungvint å bruke. Endret 25. oktober 2008 av invictus Lenke til kommentar
Cucum(r) Skrevet 25. oktober 2008 Del Skrevet 25. oktober 2008 Korleis må cryptsetup ha input, da? Lenke til kommentar
zotbar1234 Skrevet 25. oktober 2008 Del Skrevet 25. oktober 2008 Nei, jeg tenkte på explosif sitt forslag. Det ville fungert hvis det ikke var for at programmet jeg ønsket å gjøre det på (cryptsetup) ikke tåler input fra script... Hva mener du med "ikke tåler input fra script"? cryptsetup tar da vitterlig input fra f.eks. pipe. Fant dessverre ingen god måte å omgå den begrensningen og la derfor hele prosjektet på is. Synd ettersom luks-kommandoene er vanvittig tungvint å bruke. Ehhh... hvilken del av cryptsetup luksAddKey <device> er komplisert? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå