Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

rekursywne listowanie katalogu

51 views
Skip to first unread message

Michal

unread,
Jul 25, 2010, 7:01:49 PM7/25/10
to
Czy w pythonie jest jakas funkcja, ktora wylistuje mi katalog rekursywnie?
Wiem o funkcji os.walk ale poszukuej czegos zblizonego do os.listdir. Ta ostatnia
niestety nie listuje katalogow rekursywnie.

--
Michal

marrgol

unread,
Jul 25, 2010, 10:21:38 PM7/25/10
to
On 2010-07-26 01:01, Michal wrote:
> Czy w pythonie jest jakas funkcja, ktora wylistuje mi katalog rekursywnie?
> Wiem o funkcji os.walk

os.walk zwraca wszystko, co trzeba, a wylistować chyba można samemu,
w formie w jakiej się potrzebuje? ;-) Np. tak:

for path, dirs, files in os.walk('katalog'):
print path + '/'
for file in files:
print path + '/' + file

--
mrg

Daniel Mróz

unread,
Jul 26, 2010, 5:57:21 AM7/26/10
to
Napisz sobie rekursywną funkcję opartą na os.listdir(). Banalnie
proste przecież to jest.


Pozdrawiam
Beorn

--
Daniel 'Beorn' Mróz <be...@alpha.pl> http://127.0.0.1/beorn
[GIT d s:- a-@ C++++ UL++++$ P+ L++++ E--- W+ N+++ o? K- w---]
[O- M- V! PS+ PE++ Y+ PGP++ t- 5 X R !tv b+ DI D++ G++ e h*]
[ r++ y+ ]

Daniel Mróz

unread,
Jul 26, 2010, 5:59:11 AM7/26/10
to
Bardzo zły pomysł. Ten kod jest nieprzenośny.
Zamiast

path + '/' + cokolwiek

powinieneś użyć

os.path.join(path, cokolwiek)

Michal

unread,
Jul 26, 2010, 4:10:02 PM7/26/10
to

wiem, marudze. Jednak mialem nadzieje, ze da sie jakos w pythonie powtorzyc
shellowego jednolinijkowca find -iname 'hurra*txt' -exec process {} \;

marrgol

unread,
Jul 26, 2010, 8:17:37 PM7/26/10
to
On 2010-07-26 11:59, Daniel Mróz wrote:
>> for path, dirs, files in os.walk('katalog'):
>> print path + '/'
>> for file in files:
>> print path + '/' + file
>
> Bardzo zły pomysł. Ten kod jest nieprzenośny.

Przykład może i jest nieprzenośny (chociaż to tylko przykład),
ale czy pomysł jest zły, to akurat kwestia sporna. Jak to mówią,
są dwie szkoły, jedni wszystko dla zasady od razu piszą przenośnie,
a inni stosują zasadę YAGNI. I, jak zwykle, jedni uważają, że są
mądrzejsi od drugich... ;-)


--
mrg

Artur M. Piwko

unread,
Jul 27, 2010, 2:45:40 AM7/27/10
to
In the darkest hour on Mon, 26 Jul 2010 22:10:02 +0200,
Michal <natural-b...@donotmail.me> screamed:

>> > Czy w pythonie jest jakas funkcja, ktora wylistuje mi katalog rekursywnie?
>> > Wiem o funkcji os.walk
>>
>> os.walk zwraca wszystko, co trzeba, a wylistować chyba można samemu,
>> w formie w jakiej się potrzebuje? ;-) Np. tak:
>>
>> for path, dirs, files in os.walk('katalog'):
>> print path + '/'
>> for file in files:
>> print path + '/' + file
>
> wiem, marudze. Jednak mialem nadzieje, ze da sie jakos w pythonie powtorzyc
> shellowego jednolinijkowca find -iname 'hurra*txt' -exec process {} \;

Ależ da sie, dzięki os.walk.

--
[ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:237B ]
[ 08:45:22 user up 12511 days, 20:40, 1 user, load average: 0.36, 0.04, 0.84 ]

Beer is proof that God loves us and wants us to be happy. -- B. Franklin

Daniel Mróz

unread,
Jul 27, 2010, 7:53:07 AM7/27/10
to
Nie zgadzam się z Tobą. I moja racja jest racniejsza niż Twoja ;)

Artur M. Piwko

unread,
Jul 27, 2010, 5:04:08 PM7/27/10
to
In the darkest hour on Mon, 26 Jul 2010 09:59:11 +0000 (UTC),
Daniel Mróz <be...@alpha.pl> screamed:

>> for path, dirs, files in os.walk('katalog'):
>> print path + '/'
>> for file in files:
>> print path + '/' + file
> Bardzo zły pomysł. Ten kod jest nieprzenośny.
> Zamiast
>
> path + '/' + cokolwiek
>
> powinieneś użyć
>
> os.path.join(path, cokolwiek)
>

Nie tyle "bardzo zły" co "niepoprawny". Przykład zadziała na większości
obecnych OS-ów. Tych z Win na początku również (cd c:\users/name/ działa).

--
[ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:223B ]
[ 23:03:03 user up 12511 days, 10:58, 1 user, load average: 0.36, 0.04, 0.84 ]

One with God is a majority. -- Billy Graham

0 new messages