Python kezdő

Python kezdő

Hozzászólások

Egy python scriptből hogy lehetne egy DOS-os programot elindítani pataméterek átadásával WinXP alatt?
Tkinteres formon kitöltök egy beviteli mezőt és egy gombra kattintva elindítja mondjuk az ARJ tömörítőt úgy, hogy a beviteli mező tartalmával kiegéeszíti az ARJ paraméterlistáját.
Itt tartok jelenleg:
#!/usr/bin/python
# -*- coding: iso-8859-2 -*-
#

from Tkinter import *
from os import * # erre lehet, hogy nincs is szükség

mento_program = Tk()

mento_program.title("Iktatókönyv mentése")

txt1 = Label(mento_program, text= 'Dátum ÉÉÉÉHHNN :')
mezo1 = Entry(mento_program)

txt1.grid(row=0,column = 0, sticky = E)

mezo1.grid(row=0, column = 1)

gomb1 = Button(mento_program, text=' Mentés ', command = gondolom ide kellene írni a DOS program hívását)
gomb1.grid(row=1, column = 0, sticky = E)
gomb2 = Button(mento_program, text=' másol ', command = meg ide a másikat)
gomb2.grid(row=1, column = 1)
gomb3 = Button(mento_program, text=' Kilép ', command = mento_program.destroy)
gomb3.grid(row=1, column = 2, sticky = W)

mento_program.mainloop()

Sziasztok!

A következő roppant bonyolult programot szeretném kiegészíteni:

while 1:
print('Lenyomtál egy billentyűt...')

A kiegészítés pedig az lenne, hogy csak akkor írja ki a szöveget,
ha valóban le lett nyomva egy billentyű.
Tegnap délután óta keresem a megoldást, de vagy én vagyok nagyon
amatőr, vagy nagyon el lett dugva a megoldás...
Próbáltam guglizni, python.org-on keresni, a Rashi Gupta féle könyvet
nyálazni, de csaknem találtam...

Ha valaki tudja, írja le legyen szíves, hogy mivel kell megnézni,
hogy van-e lenyomott billentyű, vagy hogy hol nézhetek utána.
(Az if-et már hozzászerkesztem, csak ez a kis csavar hiányzik... :-)) )

Köszi,

Dwarf

Azt hiszem egyszerű mód (sys.stdin olvasgatása) nem működik mindig a bemeneti pufferelés miatt.

Esetleg próbálj használni curses-t.

http://www.amk.ca/python/howto/curses/curses.html

Köszönöm a linket, de ezt is megtaláltam a sok keresés közben.
Linux alól el is kezdtem tegnap nézegetni a leírtakat, de mikor Win
alatt megpróbálkoztam az "import curses" sorral és azt mondta,
hogy nincs ilyen modul, akkor gondoltam tovább keresek valami
mindkét platformon futó megoldás után.

Esetleg az is jól jönne, hogy hogy lehet ezt a curses-t Win alá
beüzemelni...

hello,

[quote:50a75198af="Dwarf"]

while 1:
print('Lenyomtál egy billentyűt...')

hmm, szamomra nem is annyira egyszeru (a peldat a google segitsegevel talaltam):

[code:1:50a75198af]
import os, sys
import termios

def getch():

fd = sys.stdin.fileno()
if os.isatty(fd):

old=termios.tcgetattr(fd)
new=termios.tcgetattr(fd)
new[3] = new[3] & ~termios.ICANON & ~termios.ECHO
new[6] [termios.VMIN] = 1
new[6] [termios.VTIME] =0

try:
termios.tcsetattr(fd, termios.TCSANOW, new)
termios.tcsendbreak(fd,0)
ch = os.read(fd,7)
finally:
termios.tcsetattr(fd, termios.TCSAFLUSH, old)
else:
ch = os.read(fd,7)

return(ch)

if __name__ == "__main__":
print "leutott bill kodja:",
cc=getch()
for j in cc: print "%d" % ord(j),
[/code:1:50a75198af]

udv:
a.

[quote:80d066f60a="Dwarf"]Köszönöm a linket, de ezt is megtaláltam a sok keresés közben.
Linux alól el is kezdtem tegnap nézegetni a leírtakat, de mikor Win
alatt megpróbálkoztam az "import curses" sorral és azt mondta,
hogy nincs ilyen modul, akkor gondoltam tovább keresek valami
mindkét platformon futó megoldás után.

Esetleg az is jól jönne, hogy hogy lehet ezt a curses-t Win alá
beüzemelni...

Esetleg próbáld ezt:

http://flangy.com/dev/python/curses/

Nem tudom milyen minőségű, nemigen nyomulok Win alatt.

Köszönöm a segítséget mindenkinek, így már menni fog.
Végülis a curses alapú megoldást választottam, mert
alapvetően nekem is az számít, hogy linux alól menjen.
A Win alá beüzemelt curses pedig segít abban, hogy ha van
egy kis ráérő időm, akkor tovább ismerkedjek a pythonnal
itt a munkahelyen.

Totál láma vagyok a pythonhoz, nem is áll szándékomban nagyon beleásni magam, de volna egy gyorsan megoldandó problémám.

Próbálom meghekkelni a mailman create.py scriptjét, mert vmi bugja van (ld: http://hup.hu/node/29048)


text = Utils.maketext(
'newlist.txt',
{'listname'    : listname,
'password'    : password,
'admin_url'   : mlist.GetScriptURL('admin', absolute=1),
'listinfo_url': mlist.GetScriptURL('listinfo', absolute=1),
'requestaddr' : mlist.GetRequestEmail(),
'siteowner'   : siteadmin,
}, mlist=mlist)

text.admin_url = replace(text.admin_url,'mailman/XXXXXXXXX/admin')
text.listinfo_url = replace(text.admin_url,'mailman/XXXXXXXXX/listinfo')

Amikor csinálok egy új levlistát, azt várom, hogy a levélben érkező URL-ben benne legyen a "XXXXXXXXX" string, mintegy bizonyítva, hogy megtaláltam a hiba forrását. Ám mégsem jelenik meg.

Viszont van egy create.pyo és egy create.pyc file a create.py mellett. Lehet, hogy le kellene fordítani a .py-t?

Ha igen, akkor hogyan?

Semmi dolgod sincs azokkal a fileokkal. Mindkettőt automatikusan hozza létre az értelmező, amikor a forrásodat byte-kóddá konvertálja. Ezt a byte-kódot menti el .pyc néven, hogy a későbbiekben ne kelljen újra megtennie, ha a forrás file nem változott semmit. A .pyo ugyanez, csak az "optimalizált" változata a .pyc-nek. Azért "optimalizált", mert információim szerint ez egyelőre csak a __doc__ string kihagyását jelenti, semmi komolyabb optimalizáció nincs a háttérben. A .pyo létrhozásához -O opcióval kell az értelmezőt meghívni.

Mellékesen megjegyzem, hogy a byte-kód csak akkor mentődik el, ha a forrás file modulként van felhasználva / importálva, tehát a direktben futtatott szkripthez sosem fogsz találni ilyen fileokat.