Seite 1 von 1

String splitten auf Zeilenumbruch-Symbol klappt nicht

Verfasst: Dienstag 6. September 2011, 07:13
von Jochen1980
Servus,

komisch, wenn ich für den Split eine andere Zeichenkette nehme klappt es wie gewünscht, ich erhalte meine Liste der Dateien zeilenweise ausgegeben. Nehme ich "\n" oder chr(10) oder '\n' wird aber nichts gesplittet - was ist da los?

Code: Alles auswählen

    def do_helper_cfaarchive_all_files_of_dir_set(self, path):
        print("do_helper_cfaarchive_all_files_of_dir_set(self, path)")
        path = "/home/joba/Desktop/clustereingang/cfa500/tempstorage/"
        output = subprocess.check_output(["ls"], cwd=path)
        print( "Popen-Wrapper check_output():", output )
        # als Liste darstellen
        file_list_string = str(output)
        list_of_files = file_list_string.split(chr(10))
        for item in list_of_files:
            print("Item:", item)
        input("Weiter mit beliebiger Taste.")
Der String sieht etwa so aus:
... bz2\ncfa500-2Z7F_I-103-archive.tar\ncfa500-2ZC3_C-160-archive.tar\ncfa500-2ZQE_A-170-archive.tar\ncfa500-3BNK_A-8-archive.tar\ncfa500-3BS9_A-104-archive.tar\ncfa500-3C5Z_A-198-archive.tar\ncfa500-3C7Y_A-115-archive.tar\ncfa500-3CXG_A-20-archive.tar\ncfa500-3D0F_A-59-archive.tar\ncfa500-3DMS_A-137-archive.tar.bz2\ncfa500-3DWT_A-54-archive.tar\ncfa500-3DX5_A-189-archive.tar\ncfa500-3EZL_A-64-archive.tar.bz2\ncfa500-3EZT_A-102-archive.tar.bz2\ncfa500-3FK8_A-55-archive.tar\ncfa500-3GG3_A-175-archive.tar\ncfa500-3H9X_A-52-archive.tar\ncfa500-3HDC_A-122-archive.tar\ncfa500-3HMF_A-66-archive.tar\nmerkl\ntempstorage\n'

Wunschausgabe ist so, dies klappte wenn ich "cfa" der split()-Methode mitgebe, ich will aber eigentlich, dass \n die Tokens trennt:
Item: 500-2K73_A-31-archive.tar\n
Item: 500-2K9H_A-45-archive.tar\n
Item: 500-2KHV_A-28-archive.tar\n
Item: 500-2KI8_A-16-archive.tar\n
Item: 500-2NZ0_B-6-archive.tar\n

Re: String splitten auf Zeilenumbruch-Symbol klappt nicht

Verfasst: Dienstag 6. September 2011, 07:29
von mkesper
Statt

Code: Alles auswählen

output = subprocess.check_output(["ls"], cwd=path)
würde ich os.listdir() verwenden.
Dein Kommentar in Zeile 6 ist auch irreführend, da du eben keine Liste sondern einen String erstellst, den du anschließend wieder zerpflücken willst.
Iteriere stattdessen über die einzelnen Bestandteile der Liste, dann hat sich dein Problem von selbst erledigt.