[ stone273 @ 25.10.2012. 12:07 ] @
Python
Eh ovako imam zadatak da iz odredjenog foldera na HDDu ispise samo extensie koje postoje u tom folderu, ja uspijem da mi ispise filevoe iz foldera ali ne znam kako da mi samo ispise extenzije ? Zna neko ?
[ del-boy @ 25.10.2012. 16:37 ] @
Recimo:
Code (python):

import os, glob
extensions = set()
for f in glob.glob('*'):
    extensions.add(os.path.splitext(f)[1])
for ext in extensions:
    print ext
 


Ovo će štampati extenzije iz trenutnog foldera. Kontam da se možeš snaći odavde.

Edit:
Evo i oneliner koji je čak i malo pamentiji (ne uračunava foldere) :)
Code (python):

for ext in set([ os.path.splitext(f)[1] for f in glob.glob('*') if not os.path.isdir(f) ]): print ext
 
[ stone273 @ 25.10.2012. 22:15 ] @
Code:
import os
import glob
os.chdir("C:\\Users\\hp\\Desktop\\Multimedia")
path = ("C:\\Users\\hp\\Desktop\\Multimedia")
print(path)
extensions = set()
for f in glob.glob('*'):
    extensions.add(os.path.splitext(f)[1])
for ext in extensions:
    print(ext)


Evo uspio sam, hvala.


[Ovu poruku je menjao stone273 dana 25.10.2012. u 23:30 GMT+1]
[ del-boy @ 25.10.2012. 22:27 ] @
Po ovome mi izgleda kao da imaš fajl glob.py na putanji "C:\Users\hp\PycharmProjects\Predavanje 3\glob.py".
Kod koji sam postavio pokušava da importuje systemski glob modul, ali pošto ti imaš modul pod istim imenom uvuče njega i zbog pogrešnog importa se javi greška.

Napravi novi fajl sa kodom što sam postavio i izvrši samo njega, ne u nekom projektu, van PyCharm-a, da nema drugih .py fajlova u istom folderu.

Takođe, izbegavaj da nazivaš module "33.py", koristi reči za imena modula, ili bar započni ime modula slovom.
[ del-boy @ 25.10.2012. 22:30 ] @
Dok sam pisao izmenio si poruku, tako da prethodna moja poruka više ne važi, vidim da si sam skontao problem :)

Što se tiče čitanja iz tvog foldera, kontao sam da ćeš taj deo moći sam... Nemam pri ruci python, ali ovako iz glave, uradi nešto na ovu temu:

Code (python):

import os
import glob
path = ("C:\\Users\\hp\\Desktop\\Multimedia")
print(path)
extensions = set()
for f in glob.glob(os.path.join(path, '*')):                 #ovde je izmena
    extensions.add(os.path.splitext(f)[1])
for ext in extensions:
    print(ext)
 


Ovo bi trebalo da čita fajlove sa tvoje putanje.
[ stone273 @ 26.10.2012. 03:17 ] @
Skonto sam to za čitanje, al na malo duži način ovo tvoje novo je dosta jednostavnije, hvala ;)
Evo pošto mi najvise mucilo da dobijem extensije i za to sam pitao, u zadatku imam jos zadano da moraju biti poredane po abecedi i da se ispise taj dio sa hdd-a na ekranu to sam uspio uradit. Al nije mi jasno pošto sam dobio od profesora tester i kaze da ne valja program, a ja tačno dobijem ono kako on od nas trazi posto nam je dao primjer kako treba izgledat, ne znam je li to moguce da u tom testeru pise kao jedan code i samo po njemu radi ali to je nemoguce jer svako ce nesto dr. uradit. Evo kako izgleda code sad i sta dobije za rezultat.

TXT zadatka: napiši program koji iz foldera ispise extensie poreda ih po abecedi uz to ispise lokaciju extensija i odvoji listu extensija od ispisa lokacija sa HDD-a za jedan red.

Code:
import os
import glob
path = ("\\Users\\hp\\Desktop\\Multimedia")
print("Direktorij:",path)
print(" ")
extensions = set()
for f in glob.glob(os.path.join(path, '*')):
    extensions.add(os.path.splitext(f)[1])
for ext in sorted(extensions):
    print(ext)
 


I ja ko rezultat dobijem baš ono što je tražio prof al tamo s testerom ne radi ovaj program :S ?

Direktorij: \Users\hp\Desktop\Multimedia

.ai
.docx
.png
.py
.xls
.zip
[ del-boy @ 26.10.2012. 14:56 ] @
Daj kod testera da vidimo šta on očekuje, pa da ispoštujemo njegova očekivanja... Moguće je da očekuje da vratiš listu ekstenzija imesto da ih ispišeš, možda hoće ekstenzije bez tačke, možda proverava da li su sortirane (ovde neće biti, jer se koristi set), možda hoće da vidi ekstenzije više puta ako se ponavljaju, a ne samo jednom... Moguće su varijacije na temu, najbolje pošalju taj tester i test podatke (spisak fajlova u folderu, ako ih tester ne kreira dinamički), pa da vidimo kako to treba da izgleda.