[Python]Existence exe souboru ve slozce

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Dupl3xx 3. 9. 2012 06:44

Zdravim, poradil by nekdo, jak jednoduse zjistit, zda se v dane slozce nacházi soubor s priponou exe ? soubory ve slozce se muzou menit a nejsou predem znamy

potreboval bych neco ve stylu
Kód: Vybrat vše
if exist (extension exe):
a =1
else
a=0

(jednoduse napsano)


diky
Naposledy upravil Vebloud dne 3. 9. 2012 08:50, celkově upraveno 1
Důvod: Code tag
Dupl3xx
Junior
Uživatelský avatar

Odeslat příspěvekod JirkaVejrazka 3. 9. 2012 08:43

Mrkni se na modul glob, resp. funkci glob.glob() Vic ti neporadim, clovek se nejlip nauci tim, ze na to prijde sam :)
JirkaVejrazka
Mírně pokročilý

Odeslat příspěvekod Vykook 3. 9. 2012 08:48

jestli ti jde jen o priponu, tak by sis mel vystacit s modulama os.path a re.
"Stará, kup husu, dostal jsem nápad!" Jakub Arbes
Vykook
Junior
Uživatelský avatar

Odeslat příspěvekod Dupl3xx 3. 9. 2012 09:04

nevim jestli jsu timto smerem dobre

Kód: Vybrat vše
os.chdir("/")
a = 0
for files in os.listdir("."):
    if files.endswith(".exe") and a == 0:
        a = 1
Dupl3xx
Junior
Uživatelský avatar

Odeslat příspěvekod Vykook 3. 9. 2012 09:25

Treba tak a nebo pomoci http://docs.python.org/howto/functional ... rehensions.
Jinak jsem se spletl, neni to os.path, ale os.listdir http://docs.python.org/library/os.html
zbytek snad uz domyslis sam, neni na tom nic slozityho
"Stará, kup husu, dostal jsem nápad!" Jakub Arbes
Vykook
Junior
Uživatelský avatar

Odeslat příspěvekod Dupl3xx 3. 9. 2012 09:44

tak to funguje, jen jeste drobnost, jak udelat aby to bralo i .exe1

cokoli co ma priponu exe a delsi, nejakej regular tam narvat?
Dupl3xx
Junior
Uživatelský avatar

Odeslat příspěvekod FuzzyOndřej 3. 9. 2012 09:49

To „and a == 0” je tam zbytečné. Po prvním úspěšném nalezení breakni cyklus. Ale stejně je jednodušší používat glob:

Kód: Vybrat vše
from glob import glob
print glob("/*.exe")


Pokud bys fakt chtěl výstup a=0/1, tak asi takhle:

Kód: Vybrat vše
a = 1 if glob("/*.exe") else 0


Pokud chceš delší příponu, tak nějak takhle, záleží na tom, jaký tvar ta přípona může mít:

Kód: Vybrat vše
print glob("/*.exe*")


Tohle je jednoduché řešení, ale není ideální, protože ti to vrátí třeba i soubor.exe.pdf, což asi nechceš.
FuzzyOndřej
Junior

Odeslat příspěvekod Dupl3xx 3. 9. 2012 10:04

diky, brejknul jsem to, poradil bys mi stou moji verzi, jak vzit vpotaz i .exe*

Kód: Vybrat vše
files.endswith(".exe*")
mi nejede
Dupl3xx
Junior
Uživatelský avatar

Odeslat příspěvekod Vykook 3. 9. 2012 11:59

Pouzij ten modul re. Je to rozhodne mocnejsi a flexibilnejsi reseni.
"Stará, kup husu, dostal jsem nápad!" Jakub Arbes
Vykook
Junior
Uživatelský avatar

Odeslat příspěvekod Dupl3xx 3. 9. 2012 12:21

import re použit nemuzu ani glob
nakonec pouzivam toto to funguje presne jak chci
Kód: Vybrat vše
m = 0
for files in os.listdir("."):
   files = files.lower()
   arr=files.split(".")
   if len(arr) > 1:
      if (arr[-1]).startswith(exe"):
         m = 1
         break
Naposledy upravil Dupl3xx dne 3. 9. 2012 12:49, celkově upraveno 1
Dupl3xx
Junior
Uživatelský avatar

Odeslat příspěvekod JirkaVejrazka 3. 9. 2012 12:35

Aha, takze skolni zadani.

Napovim
Kód: Vybrat vše
for filename in os.listdir("."):
   bits = filename.split(".")
   if len(bits) > 1:
       print bits[-1]
JirkaVejrazka
Mírně pokročilý

Odeslat příspěvekod Dupl3xx 3. 9. 2012 12:49

neni to ukol do skoly, kazdoapdne vyreseno .. dekuji vsem
Dupl3xx
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků