Re: un pic de ajutor

63 views
Skip to first unread message

catafest

unread,
Feb 25, 2013, 12:32:00 PM2/25/13
to Python Romania
Pentru fisiere imagine si testarea lor poti folosi ceva de genul :
import os,imghdr
for f in os.listdir(os.getcwd()):
try:
if imghdr.what(f):
print f
except:
pass
Pentru mutarea lor poti folosi modulele os si sys .

On Feb 25, 7:23 pm, Madalin Popa <fuucktheclo...@gmail.com> wrote:
> Salutare ,
>
> Nu de foarte mult timp am inceput sa invat acest limbaj de programare
> python si incet incet reusesc dar astazi m-am blocat un pic , mai exact la
> aceasta functie .
>
> path = 'C:\Users\Madalin\Downloads'
> ext = ['.jpg', '.png']
>
> def f(path):
>      for fisiere in os.listdir(path):
>            for fisiere in ext:
>                  if fisiere.endswith(ext):
>                         shutil.move(fisiere, new_path)
>
> Este vorba despre un script care sa-mi mute din directorul "Downloads"
> anumite fisiere dupa extensia lor , intr-un nou director .
> As aprecia orice ajutor venit din partea unui utilizator avansat .
> Multumesc anticipat .

cmiN

unread,
Feb 25, 2013, 3:39:54 PM2/25/13
to python-...@googlegroups.com
E o problema de logica si de scopul etichetelor. Daca ai deja for fisiere in os.listdir... la ce mai faci tot for fisiere in ext cand ar trebui for e in ext sau orice alta eticheta si fisiere.endswith ce treaba are cu ext (ce e o lista) cand ar trebui de fapt acel e de la for e in ext si daca new_path e si el ok ar trebui sa mearga :).

Peter Damoc

unread,
Feb 26, 2013, 6:04:42 AM2/26/13
to python-...@googlegroups.com
daca tot ce vrei sa faci este sa le muti, poti sa faci lucrul asta cu un one-liner gen:

[shutil.move(f, new_path) for f in os.listdir(path) if os.path.splitext(f)[1] in ext]

Citeste mai mult despre list comprehension
http://docs.python.org/2/tutorial/datastructures.html#list-comprehensions
e unul dintre cele mai tari puncte ale Python-ului.

Spor maxim in continuare.

P.S. asa cum s-a punctat deja, daca folosesti for-uri imbricate, grija mare la variabilele pe care faci loop-ul. in cazul tau, "fiserele" din bucla interna avea precedenta la evaluare fata de "fisirele" din bucla externa. Ideal ar fi sa le dai nume explicite gen... "photo_file_extension". Si daca imi mai permiti un sfat, evita pe cat poti folosirea limbii romane in cod. Nu stii niciodata cand vei avea nevoie sa apelezi la ajutorul unei alte persoane si daca folosesti de la inceput Engleza, poti sa ceri ajutorul la mult mult mult mai multa lume.



2013/2/25 Madalin Popa <fuuckth...@gmail.com>
Salutare , 

Nu de foarte mult timp am inceput sa invat acest limbaj de programare python si incet incet reusesc dar astazi m-am blocat un pic , mai exact la aceasta functie .

path = 'C:\Users\Madalin\Downloads'
ext = ['.jpg', '.png']


def f(path):
     for fisiere in os.listdir(path):
           for fisiere in ext:
                 if fisiere.endswith(ext):
                        shutil.move(fisiere, new_path)



Este vorba despre un script care sa-mi mute din directorul "Downloads" anumite fisiere dupa extensia lor , intr-un nou director . 
As aprecia orice ajutor venit din partea unui utilizator avansat . Multumesc anticipat .



--
Aţi primit acest mesaj deoarece sunteţi abonat(ă) la grupul „Python Romania” din Grupuri Google.
 
Pentru a vă dezabona de la grup şi pentru a nu mai primi e-mailuri de la acesta, trimiteţi un e-mail la adresa python-romani...@googlegroups.com.
Pentru mai multe opţiuni, accesaţi https://groups.google.com/groups/opt_out.
 
 



--
There is NO FATE, we are the creators.
blog: http://damoc.ro/

Madalin Popa

unread,
Feb 26, 2013, 6:53:35 AM2/26/13
to python-...@googlegroups.com
Va multumesc frumos! M-au ajutat raspunsurile voastre si sper sa pot ajunge sa stapanesc acest minunat limbaj de programare. Deocamdata incerc sa fiu perseverent si in fiecare zi sa lucrez la cate un mic script care sa ma ajute sa ma obisnuiesc cu Python . Incepator fiind , am o multitudine de intrebari fara raspunsuri, dar ma abtin sa nu va "bombardez" cu acestea, decat in momentul in care ma voi lovi de ele sau nu voi putea sa-mi gasesc singur raspunsurile. 
Peter Damoc , multumesc pentru sfat , am sa tin minte asta.
























Alex Morega

unread,
Feb 26, 2013, 8:53:42 AM2/26/13
to python-...@googlegroups.com

On 26 Feb 2013, at 13:04, Peter Damoc <pda...@gmail.com> wrote:

> daca tot ce vrei sa faci este sa le muti, poti sa faci lucrul asta cu un one-liner gen:
>
> [shutil.move(f, new_path) for f in os.listdir(path) if os.path.splitext(f)[1] in ext]
>
> Citeste mai mult despre list comprehension
> http://docs.python.org/2/tutorial/datastructures.html#list-comprehensions
> e unul dintre cele mai tari puncte ale Python-ului.

Also, recomand cu căldură biblioteca path.py[1], este un wrapper peste os.path și shutil, foarte comod. Nu are documentație prea bună dar codul sursă[2] e simplu și ușor de înțeles.

-- Alex

[1] https://pypi.python.org/pypi/path.py
[2] https://github.com/jaraco/path.py/blob/master/path.py

Reply all
Reply to author
Forward
0 new messages