[Python-de] os.walk reihenfolge

Szabo, Patrick (LNG-VIE) patrick.szabo at lexisnexis.at
Do Mär 14 14:06:42 CET 2013


Hi,

Danke für deine Antwort.

Mein Problem ist leider das die Dateinamen total unterschiedlich sein können.
Ich hatte gehofft es gibt vlt. irgendwie einen Parameter, oder so der mir die Reihenfolge die Windows zeigt beibehält.



. . . . . . . . . . . . . . . . . . . . . . . . . .
Ing. Patrick Szabo
Developer
LexisNexis
A-1030 Wien, Marxergasse 25

mailto:Patrick.Szabo at lexisnexis.at
Tel.: +43 1 53452 1573
Fax.: +43 1 534 52 146

. . . . . . . . . . . . . . . . . . . . . . . . . .

-----Ursprüngliche Nachricht-----
Von: python-de [mailto:python-de-bounces+patrick.szabo=lexisnexis.at at python.org] Im Auftrag von mmueller at python-academy.de
Gesendet: Donnerstag, 14. März 2013 13:38
An: python-de at python.org
Betreff: Re: [Python-de] os.walk reihenfolge


Zitat von "Szabo, Patrick (LNG-VIE)" <patrick.szabo at lexisnexis.at>:

> Hi,
>
> Ich verwende Python 3.2 und walke durch eine Ordnerstruktur.
> Nun ordnet er mir die files aber leider nicht so wie ich das gerne
> hätte, nämlich so wie Windows es auch tut.
> Ich krieg die files so (Beispiel):
>
> Blablabla_1
> Blablabla_10
> Blablabla_2
> Blablabla_3
> Blablabla_4
> Blablabla_5
> Blablabla_6
> Blablabla_7
> Blablabla_8
> Blablabla_7

Das ist schon die richtige Reihenfolge:

>>> sorted(['Blablabla_1', 'Blablabla_10', 'Blablabla_2'])
     ['Blablabla_1', 'Blablabla_10', 'Blablabla_2']

Du hast bestimmt schon mal diese Art der Namensgebung gesehen:

>>> sorted(['Blablabla_0001', 'Blablabla_0010', 'Blablabla_0002'])
     ['Blablabla_0001', 'Blablabla_0002', 'Blablabla_0010']

Das ist bei automatisch erzeugten Dateien üblich.

> Ich will das ganze natürlich in der richtigen Reihenfolge also
> Blablabla_1 bis Blablabla_10.
> Ich versuche gerade das im Nachhinein zu sortieren, aber da geht iwie
> auch nix weiter.

Unter der Annahme, dass die Datei-Namen dem Muster oben entsprechen, würde so was funktioniern:

>>> names =  ['Blablabla_1', 'Blablabla_10', 'Blablabla_2'] split =
>>> [entry.split('_') for entry in names] ordered = sorted(split,
>>> key=lambda x: int(x[1])) new_names = ['_'.join(name) for name in
>>> ordered] new_names
     ['Blablabla_1', 'Blablabla_2', 'Blablabla_10']

Geht auch in einer Zeile, wird dann aber eher unübersichtlich.

Viele Grüße
Mike

>
> Irgendwelche Ideen ?
>
>
>
>
>
>
> . . . . . . . . . . . . . . . . . . . . . . . . . .
>
> Ing. Patrick Szabo
>
> Developer
>
> LexisNexis
>
> A-1030 Wien, Marxergasse 25
>
>
>
> Patrick.Szabo at lexisnexis.at<mailto:Patrick.Szabo at lexisnexis.at>
>
> Tel.: +43 1 53452 1573
>
> Fax.: +43 1 534 52 146
>
> . . . . . . . . . . . . . . . . . . . . . . . . . .



_______________________________________________
python-de maillist  -  python-de at python.org
http://mail.python.org/mailman/listinfo/python-de


Mehr Informationen über die Mailingliste python-de