stinfo.st_ctime modifizieren

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
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

ich wieder mal, HI :roll:
kann man die ausgabe von "erstellt" auch modifizieren?
ich möchte nämlich lieber u'Fri, 08. August 2014, 16:32:38' ausgegeben haben.

Code: Alles auswählen

# !/usr/bin/python

import os, time, stat

liste = []
def file_name(filename):
    objects = os.listdir(filename)
    if len(objects) > 0:
        for index in objects:
            path_file = unicode(os.path.join(filename, index))
            stinfo = os.stat(path_file)
            groesse = stinfo[stat.ST_SIZE]
            erstellt = unicode(time.ctime(stinfo.st_ctime))

            table_lines = [path_file, index, groesse, erstellt]
            liste.append(table_lines)
        return liste

for element in file_name('C:\\'):
    print element
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@DMD-OL: Funktionen sollten nach Tätigkeiten benannt werden, filen_name ist das nicht. `liste` ist eine globale Variable, die dann auch noch von der Funktion zurückgegeben wird! Das sollte eine lokale Variable sein und unabhängig ob es Elemente gibt oder nicht, zurückgegeben werden. Dann ist auch die if-Abfrage überflüssig, denn eine Schleife über eine leere Liste wird 0 mal durchlaufen. `filename` ist kein `filename` sondern ein Verzeichnis. `index` ist kein Index sondern ein Dateiname. objects ist sehr generisch, weil alles Objekte sind. `unicode` aufzurufen führt nur dazu, dass bei nicht-ASCII-Zeichen das Programm abbricht.
Wenn Du mehr Flexibilität willst, nimm doch datetime

Code: Alles auswählen

import glob, stat
import datetime

def get_file_infos(pattern):
    result = []
    for filename in glob.iglob(pattern):
        stinfo = os.stat(filename)
        groesse = stinfo.st_size
        erstellt = datetime.datetime.fromtimestamp(stinfo.st_ctime)
        result.append((filename, groesse, erstellt))
    return result

for filename, groesse, erstellt in get_file_infos('C:\\*'):
    print "{} {} {:%d %b %Y}".format(filename, groesse, erstellt)
Antworten