wywolanie dosc zlozonego polecenia w systemie 
 
wywolanie dosc zlozonego polecenia w systemie
Zobacz wiadomoci
 
Cytat
A gdyby tak si wedrze na umysw gr, / Gdyby stan na ludzkich myli piramidzie, / I przebi czoem przesdw chmur, / I by najwysz myl wcielon. . . Juliusz Sowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • tejsza.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com