Ausgabe eines sortierten Arrays ohne die Zeichen [' und ']

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
CodingForScotch
User
Beiträge: 8
Registriert: Sonntag 10. Februar 2019, 21:50

Hallo liebe Community,

dies ist mein erster Post...aber sicherlich nicht der letzte :-)

Aktuell lerne ich Python3 auf meinem Linux-System.
Erfahrungen in der Programmierung sind grundsätzlich vorhanden.

Da ich nicht um irgendwelche Ratschläge ins Blaue bettel, gibt es hier
erst einmal meinen vollständigen Code:

Code: Alles auswählen

import os
os.system('clear')

a = []  # Liste erzeugen

# zeigt mir alle Ordner
for folder in os.listdir('/media/codingforscotch/MedienServer1/Filme/'):
    print (folder)      # Kontrollausgabe (korrekte aber unsortierte Ausgabe)
    a.append([folder])  # Jeden gefundenen Ordner in eine Liste schreiben

print("Anzahl Listenelemente:",len(a))  # Kontrollausgabe
print ("\n")

# Liste sortieren
a.sort()

# sortierte Liste ausgeben, 1. Versuch
print (a)
# Resultat: Gibt alles sortiert aber faelschlicherweise in einer Zeile und ohne Zeilenumbrueche, ausserdem vor jeden Eintrag [' und hinten '] 

# sortierte Liste ausgeben, 2. Versuch
for eintraege in a:
    print(eintraege)
# Resultat: Gibt alle Zeilen richtigerweise sortiert untereinander aus aber vorne mit [' und hinten mit ']
Nun zu meinem Problem:
Von einem Verzeichnis lese ich die Unterverzeichnisse ein (nur die erste Ebene).
Die Ausgabe, die ich nach jedem eingelesenen Ordner ausführe, ist unsortiert.
Somit dachte ich daran, alles in eine Liste zu schieben und die Liste zu sortieren.
Habe ich auch gemacht. :P
Allerdings ist die Ausgabe der Liste mit Zeichen versehen, die ich nicht bei der Ausgabe sehen will.

Hier etwas konkreter:
Die Ausgabe eines Eintrags in der ersten For Schleife lautet z.B.
Cars 2 (2011) [720p]

Die Ausgabe der sortierten Liste allerdings gibt mir leider keine Zeilenumbrüche.
Außerdem steht am Anfang jedes Eintrags ein [' und am Ende ein '].
['Cars 2 (2011) [720p]']

Den Zeilenumbruch bekomme ich mit der zweiten For Schleife aber da ich auf die
Enträge der sortieren Liste zugreife, habe ich auch hier wieder folgende Ausgabe:
['Cars 2 (2011) [720p]']

Das [' und das '] möchte ich weghaben. :shock:
Bevor ich mit "String-Beschneidungen" anfange, würde ich gerne wissen, ob es andere Möglichkeiten gibt.

Falls Ihr wissen wollt, was genau ich mit der Liste machen will ... also in TXT-Datei sichern oder sonstwas.
Ich weiß es noch nicht :mrgreen:

Danke schonmal für alle Antworten
CfS
__deets__
User
Beiträge: 14528
Registriert: Mittwoch 14. Oktober 2015, 14:29

Statt die Liste als Ganzes auszugeben, mach

print(“\n”.join(a))
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@CodingForScotch: Warum steckst Du erst jedes einzelne Element noch einmal in eine Liste die Du am Ende gar nicht haben willst und die auch gar keinen Sinn macht?

`a` ist ein schlechter Name und `eintraege` ist ein falscher Name, da es sich ja jeweils nur um *einen* Eintrag handelt.

Zwischen einer Funktion/Methode und der öffnenden Klammer für den Aufruf steht normalerweise kein Leerzeichen. Du handhabst das sehr inkonsistent.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Was Du siehst ist die String-Repräsentation einer Liste, die Du beim Anlegen der Liste `a` für jedes einzelne Element zusätzlich erzeugst. Da stellt sich mir die Frage, warum? Was willst Du mit der Liste von Listen später machen?

`os.listdir` liefert schon eine Liste von Dateinamen. Wenn Dir diese Liste reicht, ist die erste for-Schleife überflüssig.

Code: Alles auswählen

import os
filenames = sorted(os.listdir('/media/codingforscotch/MedienServer1/Filme/'))
for filename in filenames:
    print(filename)
CodingForScotch
User
Beiträge: 8
Registriert: Sonntag 10. Februar 2019, 21:50

Hey zusammen.,

Ihr habt völlig recht. Ich hatte das echt nicht auf dem Zettel, dass mit os.listdir... schon eine Liste
erzeugt wird und diese ja sogar mit sorted(os.listdir... sortiert werden kann.

Asche auf mein Haupt, werde beim nächsten mal zunächst lesen, was genau da eigentlich passiert. ;-)

Vielen Dank
CfS
Antworten