os.listdir(path) bringt mir None
Verfasst: Donnerstag 22. Dezember 2005, 20:17
Ich bekomme neben der Liste aller Verzeichniseinträge von path auch einen Wert "None". Wozu?
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Hier leider nur die Windows-Variante:Achso: Nur falls jetzt jemandem die Idee kommt... Nein, ich möchte nicht die Python-Funktion os.walk() benutzen, weil ich später noch mehr als nur die Verzeichnis- und Dateinamen brauche.
Code: Alles auswählen
import os
class Foo:
def __init__(self):
# list of directories to snapshot
dirlist = ["C:\\test\\"]
# create dirlist (for testing purposes)
if not os.path.exists(dirlist[0]):
os.mkdir(dirlist[0])
file("%s\\file1.txt" % dirlist[0], "w")
file("%s\\file2.txt" % dirlist[0], "w")
file("%s\\file3.txt" % dirlist[0], "w")
os.mkdir("%s\\subdir1" % dirlist[0])
file("%s\\subdir1\\file1.txt" % dirlist[0], "w")
file("%s\\subdir1\\file2.txt" % dirlist[0], "w")
os.mkdir("%s\\subdir2" % dirlist[0])
# walk through dirlist
for dir in dirlist:
# check if path exists
if os.path.exists(dir):
# walk through
self.walk([dir])
# walk through a path recursively
def walk(self, lPath):
print "="*32
print "%s" % lPath
print "="*32
for sDirEntry in os.listdir("\\".join(lPath)):
# if directory: walk recursively
if os.path.isdir(os.path.join("\\".join(lPath),sDirEntry)):
print "%s : %s" % (type(lPath), lPath)
print "%s : %s" % (type(sDirEntry), sDirEntry)
app = lPath.append(sDirEntry)
print "after append() : %s" % app
self.walk(app)
Foo()
Code: Alles auswählen
================================
['C:\\test\\']
================================
<type 'list'> : ['C:\\test\\']
<type 'str'> : subdir1
after append() : None
================================
None
================================
Traceback (most recent call last):
File "test.py", line 39, in ?
Foo()
File "test.py", line 23, in __init__
self.walk([dir])
File "test.py", line 37, in walk
self.walk(app)
File "test.py", line 30, in walk
for sDirEntry in os.listdir("\\".join(lPath)):
TypeError: sequence expected, NoneType found
Append gibt immer None zurück.droptix hat geschrieben:Code: Alles auswählen
app = lPath.append(sDirEntry)
Erstens macht das auch nix weiter als mit os.listdir() die Verzeichnisse rekursiv zu durchwandern und zweitens ist das Ergebnis von os.walk() für meine Zwecke nicht passend, da ich zusätzlich noch weitere Dateiinformationen wie Dateigröße und Datum benötige.Achso: Nur falls jetzt jemandem die Idee kommt... Nein, ich möchte nicht die Python-Funktion os.walk() benutzen, weil ich später noch mehr als nur die Verzeichnis- und Dateinamen brauche.
Code: Alles auswählen
allDirs = {
'dirs' : {
'C:': {
'dirs': { ... (rekursiv) ... }
'files': [ ... (rekursiv) ... ]
}
},
'files': [
{
'name': "file1.ext",
'size': 12334567,
'md5sum': "wer76824ckwxcqw9xkc4nmqw78yb"
}
]
}