wywolanie dosc zlozonego polecenia w systemie
Tomasz Pichlinski - 24-12-2006 00:56
wywolanie dosc zlozonego polecenia w systemie
witam
musze wykonac polecenie o mniej wiecej takiej skladni (tak sie je pisze w cmd, system windows):
E:\baza_danych\test_tiffy>"C:\Program Files\IrfanView\i_view32.exe" "e:\baza_danych\test_tiffy\*.tif"/info=rozmiary.txt
sciezka pierwsza jest ustawiana w pliku konfiguracyjnym programu, natomiast druga i typy plikow jest parametryzowane przez uzytkownika. system windows. jak to obsluzyc? podanie do os.system takiego stringa nie dziala niestety. najlepiej, gdyby przy okazji polecenie czekalo na zakonczenie wykonania przez ifranView operacji.
pozdrawiam tomasz 'piniu' pichlinski
Bart Ogryczak - 24-12-2006 00:56
Tomasz Pichlinski wrote: > witam > > musze wykonac polecenie o mniej wiecej takiej skladni (tak sie je pisze > w cmd, system windows): > > E:\baza_danych\test_tiffy>"C:\Program Files\IrfanView\i_view32.exe" > "e:\baza_danych\test_tiffy\*.tif"/info=rozmiary.txt > > sciezka pierwsza jest ustawiana w pliku konfiguracyjnym programu, > natomiast druga i typy plikow jest parametryzowane przez uzytkownika. > system windows. jak to obsluzyc? podanie do os.system takiego stringa > nie dziala niestety.
Ale pamietales, zeby zapisac \ jako \\?
> najlepiej, gdyby przy okazji polecenie czekalo na > zakonczenie wykonania przez ifranView operacji.
os.system() czeka na zakonczenie polecenia.
Tomasz Pichlinski - 24-12-2006 00:56
Bart Ogryczak napisa(a): > Ale pamietales, zeby zapisac \ jako \\?
sciezki ktore nie sa czytane z pliku sa pobierane przez wx.DirDialog, potem tylko to sklejam w cale polecenie. jak wypuszcze takie cos: "C:\\Program Files\\IfranView\\i_view32" "E:\\baza_danych\\test_tiffy\\*.tif"/info=rozmiary.txt
to dostaje: Nazwa 'C:\\Program' nie jest rozpoznawana jako polecenie wewn©trzne lub zewn©trzne, program wykonywalny lub plik wsadowy.
a jak: "C:\Program Files\IfranView\i_view32" "E:\baza_danych\test_tiffy\*.tif"/info=rozmiary.txt
to: Nazwa 'C:\Program' nie jest rozpoznawana jako polecenie wewn©trzne lub zewn©trzne, program wykonywalny lub plik wsadowy.
czyli czy tak czy tak, efekt ten sam :(
> os.system() czeka na zakonczenie polecenia.
bardzo dobrze :)
pozdrawiam
Rob Wolfe - 24-12-2006 00:56
Tomasz Pichlinski napisa(a): > Bart Ogryczak napisa(a): > > Ale pamietales, zeby zapisac \ jako \\? > > sciezki ktore nie sa czytane z pliku sa pobierane przez wx.DirDialog, > potem tylko to sklejam w cale polecenie. > jak wypuszcze takie cos: > "C:\\Program Files\\IfranView\\i_view32" > "E:\\baza_danych\\test_tiffy\\*.tif"/info=rozmiary.txt > > to dostaje: > Nazwa 'C:\\Program' nie jest rozpoznawana jako polecenie wewn©trzne lub > zewn©trzne, > program wykonywalny lub plik wsadowy. > > a jak: > "C:\Program Files\IfranView\i_view32"
Tu na pewno jest IfranView, a nie IrfanView?
> "E:\baza_danych\test_tiffy\*.tif"/info=rozmiary.txt > > to: > Nazwa 'C:\Program' nie jest rozpoznawana jako polecenie wewn©trzne lub > zewn©trzne, > program wykonywalny lub plik wsadowy.
sprbuj tak (python 2.4):
from subprocess import call call(["C:\\Program Files\\IrfanView\\i_view32", "E:\\baza_danych\\test_tiffy\\*.tif", "/info=rozmiary.txt"])
-- pozdrawiam Rob
Bart Ogryczak - 24-12-2006 00:56
Tomasz Pichlinski wrote: > Bart Ogryczak napisa(a): > > Ale pamietales, zeby zapisac \ jako \\? > > sciezki ktore nie sa czytane z pliku sa pobierane przez wx.DirDialog, > potem tylko to sklejam w cale polecenie. > jak wypuszcze takie cos: > "C:\\Program Files\\IfranView\\i_view32" > "E:\\baza_danych\\test_tiffy\\*.tif"/info=rozmiary.txt > > to dostaje: > Nazwa 'C:\\Program' nie jest rozpoznawana jako polecenie wewn©trzne lub > zewn©trzne, > program wykonywalny lub plik wsadowy.
Uzyj C:\PROGRA~1\ zamiast C:\Program Files\. Swoja droga "" powinno zalatwic spraw spacji.
Tomasz Pichlinski - 24-12-2006 00:56
Rob Wolfe napisa(a): > Tu na pewno jest IfranView, a nie IrfanView?
ojej, fakt, nie wiem dlaczego tak pisalem. czlowiek raz cos blednie przeczyta i zaraz sie utrwala w glowie z bledem.
> from subprocess import call > call(["C:\\Program Files\\IrfanView\\i_view32", > "E:\\baza_danych\\test_tiffy\\*.tif", > "/info=rozmiary.txt"])
zaraz przetestuje.
swoja droga zaczalem dodatkowo z ImageMagick kombinowac.
Bart Ogryczak - 24-12-2006 00:56
Tomasz Pichlinski wrote: > Rob Wolfe napisa(a): > > Tu na pewno jest IfranView, a nie IrfanView? > > ojej, fakt, nie wiem dlaczego tak pisalem. czlowiek raz cos blednie > przeczyta i zaraz sie utrwala w glowie z bledem. > > > from subprocess import call > > call(["C:\\Program Files\\IrfanView\\i_view32", > > "E:\\baza_danych\\test_tiffy\\*.tif", > > "/info=rozmiary.txt"]) > > zaraz przetestuje. > > swoja droga zaczalem dodatkowo z ImageMagick kombinowac.
I slusznie, bo zamiast dlubac w jakichs wywlolaniach systemowych, to uzywasz sobie najnormalniej bezposrednio w Pythonie modulu PythonMagick.
Rob Wolfe - 24-12-2006 00:56
Bart Ogryczak napisa(a):
> > swoja droga zaczalem dodatkowo z ImageMagick kombinowac. > > I slusznie, bo zamiast dlubac w jakichs wywlolaniach systemowych, to > uzywasz sobie najnormalniej bezposrednio w Pythonie modulu PythonMagick.
A eby ju cakiem by niezalenym od zewntrznych programw to PIL. :)
-- pozdrawiam Rob
Tomasz Pichlinski - 24-12-2006 00:56
Rob Wolfe napisa(a): > sprbuj tak (python 2.4): > > from subprocess import call > call(["C:\\Program Files\\IrfanView\\i_view32", > "E:\\baza_danych\\test_tiffy\\*.tif", > "/info=rozmiary.txt"])
to cos nie dziala, ale (patrz nizej)...
glupi jestem, przeciez mam wxPython w unicode i textCtrl.GetValue() zwraca mi napis unicode. po konwersji czesciowo juz dziala, tzn. wywolanie samego IrfanView jest ok, mecze sie dalej nad wywolaniem z parametrami :(
Rob Wolfe - 24-12-2006 00:56
Tomasz Pichlinski napisa(a): > Rob Wolfe napisa(a): > > sprbuj tak (python 2.4): > > > > from subprocess import call > > call(["C:\\Program Files\\IrfanView\\i_view32", > > "E:\\baza_danych\\test_tiffy\\*.tif", > > "/info=rozmiary.txt"]) > > to cos nie dziala, ale (patrz nizej)...
Co to znaczy, e nie dziaa? Chyba nie dostajesz znowu: "Nazwa ... nie jest rozpoznawana jako polecenie..." ? Rozumiem, e Twoim celem jest uzyskanie pliku rozmiary.txt, a nie uruchomienie podgldu tiff'w.
> glupi jestem, przeciez mam wxPython w unicode i textCtrl.GetValue() > zwraca mi napis unicode. po konwersji czesciowo juz dziala, tzn. > wywolanie samego IrfanView jest ok, mecze sie dalej nad wywolaniem z > parametrami :(
Chyba czego nie rozumiem. Zanim zaczniesz si bawi w pobieranie stringw z okienka i konwersje, to si upewnij, e jak wklepiesz z rki cieki (tak jak ja powyej), to wszystko zadziaa. U mnie to dziaa bez problemw zarwno ze zwykymi stringami jak i z unicodem (win xp).
-- pozdrawiam Rob
Tomasz Pichlinski - 24-12-2006 00:56
Rob Wolfe napisa(a): > Co to znaczy, e nie dziaa? > Chyba nie dostajesz znowu: > "Nazwa ... nie jest rozpoznawana jako polecenie..." > ?
taki string (wersje zarowno z pojedynczymi jak i podwojnymi ukosnikami, z .exe i bez): irfan = "C:\Program Files\IrfanView\i_view32.exe" <type 'str'>
taki blad: Traceback (most recent call last): File "E:\baza_danych\rozmiary\program\OknoGlowne.py ", line 154, in OnButtonWyk onajButton self.wywolajIfranView() File "E:\baza_danych\rozmiary\program\OknoGlowne.py ", line 182, in wywolajIfra nView subprocess.call([irfan]) File "E:\PROGRAMY\PYTHON\lib\subprocess.py", line 412, in call return Popen(*args, **kwargs).wait() File "E:\PROGRAMY\PYTHON\lib\subprocess.py", line 542, in __init__ errread, errwrite) File "E:\PROGRAMY\PYTHON\lib\subprocess.py", line 706, in _execute_child startupinfo) WindowsError: [Errno 3] System nie mo┐e odnaleč* okrešlonej šcie┐ki
takie wywolanie: subprocess.call([irfan])
> Rozumiem, e Twoim celem jest uzyskanie pliku > rozmiary.txt, a nie uruchomienie podgldu tiff'w.
napisze co dokladnie jest moim celem. program mialby za zadanie wydobyc z danego katalogu (bez podkatalogow) informacje o plikach o zadanym rozszerzeniu. pliki beda w 99% tiffami w cmyk, spore, bez jednolitej konwencji nazewniczej - rozne kwiatki moga sie zdarzac, polskie znaki, spacje itp. zapisac te dane do pliku w celu przetworzenia w dalszym etapie. interesujace informacje to: rozmiary (cm, nie piksele), nazwa pliku. chodzi o pozniejsze wyswietlenie w tabeli, wyliczenie powierzchni wedlug zadanej skali pliku (1:1, 1:10, itp., ceny (wedlug zadanej ceny m2), sumy dla danego katalogu itp.
> Chyba czego nie rozumiem. Zanim zaczniesz si bawi w pobieranie > stringw z okienka i konwersje, to si upewnij, e jak wklepiesz > z rki cieki (tak jak ja powyej), to wszystko zadziaa.
wklepywalem wszystko w cmd z reki i dzialalo, w pythonie tylko staram sie odtworzyc takiego samego stringa i wywolac.
to ja czegos nie rozumiem.
Rob Wolfe - 24-12-2006 00:56
Tomasz Pichlinski napisa(a): > Rob Wolfe napisa(a): > > Co to znaczy, e nie dziaa? > > Chyba nie dostajesz znowu: > > "Nazwa ... nie jest rozpoznawana jako polecenie..." > > ? > > taki string (wersje zarowno z pojedynczymi jak i podwojnymi ukosnikami, > z .exe i bez): > irfan = "C:\Program Files\IrfanView\i_view32.exe" > <type 'str'> > > > taki blad: > Traceback (most recent call last): > File "E:\baza_danych\rozmiary\program\OknoGlowne.py ", line 154, in > OnButtonWyk > onajButton > self.wywolajIfranView() > File "E:\baza_danych\rozmiary\program\OknoGlowne.py ", line 182, in > wywolajIfra > nView > subprocess.call([irfan]) > File "E:\PROGRAMY\PYTHON\lib\subprocess.py", line 412, in call > return Popen(*args, **kwargs).wait() > File "E:\PROGRAMY\PYTHON\lib\subprocess.py", line 542, in __init__ > errread, errwrite) > File "E:\PROGRAMY\PYTHON\lib\subprocess.py", line 706, in _execute_child > startupinfo) > WindowsError: [Errno 3] System nie mo┐e odnaleč* okrešlonej šcie┐ki > > takie wywolanie: > subprocess.call([irfan])
Odpal interpreter i sprbuj po kolei to:
>>> subprocess.call(["C:\\Program Files\\IrfanView\\i_view32.exe"]) 0 >>> subprocess.call(["C:\\Program Files\\IrfanView\\i_view32.exe", .... "E:\\baza_danych\\test_tiffy\\*.tif"]) 0 >>> subprocess.call(["C:\\Program Files\\IrfanView\\i_view32.exe", .... "E:\\baza_danych\\test_tiffy\\*.tif", .... "/info=rozmiary.txt"]) 0 A potem przeklej tu, tak jak ja, cznie z tracebackiem.
-- pozdrawiam Rob
Rob Wolfe - 24-12-2006 00:56
Rob Wolfe napisa(a): > Tomasz Pichlinski napisa(a): > > Rob Wolfe napisa(a):
> > taki string (wersje zarowno z pojedynczymi jak i podwojnymi ukosnikami, > > z .exe i bez): > > irfan = "C:\Program Files\IrfanView\i_view32.exe" > > <type 'str'>
I jeszcze jedno gupie pytanie. Czy aby ten IrfanView nie ley na dysku E ?
-- pozdrawiam Rob
Tomasz Pichlinski - 24-12-2006 00:56
Rob Wolfe napisa(a): > Czy aby ten IrfanView nie ley na dysku E ?
wiem, pomylilem sie w nazwie programu, nie popatrzylem jakiego typu sa moje stringi, pewnie i inne bledy, ale tego jestem pewien. moge przeslac screeny z eksploratora windows o ile jest godny zaufania ;)
reszte zaraz sprawdze, musze dokonczyc jedna rzecz. program pisze w czasie pomiedzy innymi zadaniami, moze z tego wynikaja moje bledy, roztargnienie, niezbyt sprzyjajace programowaniu srodowisko pracy.
Tomasz Pichlinski - 24-12-2006 00:56
Rob Wolfe napisa(a): .... > A potem przeklej tu, tak jak ja, cznie z tracebackiem. >
wszystko dziala w interpreterze
Tomasz Pichlinski - 24-12-2006 00:56
Tomasz Pichlinski napisa(a): > wszystko dziala w interpreterze
ale juz
>>> irfan = "\"c:\\Program Files\\IrfanView\\i_view32.exe\"" >>> irfan '"c:\\Program Files\\IrfanView\\i_view32.exe"' >>> subprocess.call([irfan,"E:\\baza_danych\\test_tiffy\\*.tif","/info=rozmiary. txt"]) Traceback (most recent call last): File "<stdin>", line 1, in ? File "E:\PROGRAMY\PYTHON\lib\subprocess.py", line 412, in call return Popen(*args, **kwargs).wait() File "E:\PROGRAMY\PYTHON\lib\subprocess.py", line 542, in __init__ errread, errwrite) File "E:\PROGRAMY\PYTHON\lib\subprocess.py", line 706, in _execute_child startupinfo) WindowsError: [Errno 3] System nie mo┐e odnaleč* okrešlonej šcie┐ki
Rob Wolfe - 24-12-2006 00:56
Tomasz Pichlinski napisa(a): > Tomasz Pichlinski napisa(a): > > wszystko dziala w interpreterze > > ale juz > > >>> irfan = "\"c:\\Program Files\\IrfanView\\i_view32.exe\""
Skd ten szataski pomys z tymi ekstra ciapkami?
> >>> irfan > '"c:\\Program Files\\IrfanView\\i_view32.exe"'
Podaj *zwyky* string bez adnych dodatkowych cudzysoww, apostrofw itp. i pozwl dziaa moduowi subprocess.
-- pozdrawiam Rob
Tomasz Pichlinski - 24-12-2006 00:56
Rob Wolfe napisa(a): > Tomasz Pichlinski napisa(a): >> Tomasz Pichlinski napisa(a): >>> wszystko dziala w interpreterze >> ale juz >> >> >>> irfan = "\"c:\\Program Files\\IrfanView\\i_view32.exe\"" > > Skd ten szataski pomys z tymi ekstra ciapkami? > >> >>> irfan >> '"c:\\Program Files\\IrfanView\\i_view32.exe"' > > Podaj *zwyky* string bez adnych dodatkowych cudzysoww, > apostrofw itp. i pozwl dziaa moduowi subprocess.
dziala, wielkie dzieki. i na taki duperel stracilem caly dzien, zawracalem ludziom glowe... przepraszam i jeszcze raz dziekuje
tomasz 'piniu' pichlinski
Jaroslaw Zabiello - 24-12-2006 00:56
Dnia Tue, 14 Nov 2006 17:17:33 +0100, Tomasz Pichlinski napisa(a):
> musze wykonac polecenie o mniej wiecej takiej skladni (tak sie je pisze > w cmd, system windows): > > E:\baza_danych\test_tiffy>"C:\Program Files\IrfanView\i_view32.exe" > "e:\baza_danych\test_tiffy\*.tif"/info=rozmiary.txt
A dlaczego uywasz backslasha \ zamiast slasha / ??
-- Jarosaw Zabieo http://blog.zabiello.com
Rob Wolfe - 24-12-2006 00:56
Jaroslaw Zabiello napisa(a): > Dnia Tue, 14 Nov 2006 17:17:33 +0100, Tomasz Pichlinski napisa(a): > > > musze wykonac polecenie o mniej wiecej takiej skladni (tak sie je pisze > > w cmd, system windows): > > > > E:\baza_danych\test_tiffy>"C:\Program Files\IrfanView\i_view32.exe" > > "e:\baza_danych\test_tiffy\*.tif"/info=rozmiary.txt > > A dlaczego uywasz backslasha \ zamiast slasha / ??
W ciece do exec'a slash jest OK, ale ju w parametrze nie, wic chyba lepiej nie miesza.
-- pozdrawiam Rob
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?=
[foxpro] To =?ISO-8859-2?Q?zachcia=B3o_mi_si=EA_64_bitow?==?ISO-8859-2?Q?ego_systemu__=28XP=29_=3A-=29?=
[postgre]PostgreSQL 8.1 + system plikow
Ksiazka - "Podstawowy =?ISO-8859-2?Q?wyk=B3ad_z_system=F3w_?==?ISO-8859-2?Q?baz_danych=22?=
[oracle][ibm] Zapewnianie transakcyjnoci na pograniczu MQ SDK z innymi systemami transakcyjnymi.
=?iso-8859-2?q?Zna_si=EA_kto=B6_na_teoretycznej_stronie_proje ktowaini_system=F3w_informatycznych=3F?=
=?iso-8859-2?q?System_szablon=F3w_wg_wymaga=F1_-_porad=BCcie?=
ZLECE WYKONANIE SYSTEMU ZARZADZANIA TRESCIA/Silnik sklepu/Shop Engine
=?iso-8859-2?q?[PRACA]_Poszukiwany_pracownik_z_do=B6wiadczeniem_w_DTP_i_ systemach_Windows?=
=?iso-8859-2?q?=5BD=B3ugie=5D?= javax.transaction.SystemException z hibernate.
zanotowane.pldoc.pisz.plpdf.pisz.pltejsza.htw.pl
Cytat
Decede mihi sole - nie zasaniaj mi sonca. Gdy kogo kochasz, jeste jak stworzyciel wiata - na cokolwiek spojrzysz, nabiera to ksztatu, wypenia si barw, wiatem. Powietrze przytula si do ciebie, choby by mrz, a ty masz w sobie tyle radoci, e musisz j rozdawa wokoo, bo si w tobie nie mieci Hoc fac - tak czy. A tergo - od tyu; z tyu. I czarne wosy posiwiej. Safona |
|