Dies ist ein Skript der Suche nach Dateien, die größer als eine bestimmte Größe sind:Errno 2, während in Python mit os.walk
def size_scan(folder, size=100000000):
"""Scan folder for files bigger than specified size
folder: abspath
size: size in bytes
"""
flag = False
for folder, subfolders, files in os.walk(folder):
# skip 'anaconda3' folder
if 'anaconda3' in folder:
continue
for file in files:
file_path = os.path.join(folder, file)
if os.path.getsize(file_path) > size:
print(file_path, ':', os.path.getsize(file_path))
flag = True
if not flag:
print('There is nothing, Cleric')
ich die folgende Fehlermeldung beim Scannen Stammordner in Linux:
Traceback (most recent call last):
File "<ipython-input-123-d2865b8a190c>", line 1, in <module>
runfile('/home/ozramsay/Code/sizescan.py', wdir='/home/ozramsay/Code')
File "/home/ozramsay/anaconda3/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 880, in runfile
execfile(filename, namespace)
File "/home/ozramsay/anaconda3/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "/home/ozramsay/Code/sizescan.py", line 32, in <module>
size_scan('/')
File "/home/ozramsay/Code/sizescan.py", line 25, in size_scan
if os.path.getsize(file_path) > size:
File "/home/ozramsay/anaconda3/lib/python3.6/genericpath.py", line 50, in getsize
return os.stat(filename).st_size
FileNotFoundError: [Errno 2] No such file or directory: '/run/udev/link.dvdrw'
Ich vermute, es ist, weil Python-Interpreter nicht selbst scannen kann, also habe ich versucht, "Anaconda3" Ordner von der Suche zu überspringen (markiert durch # skip Anaconda Ordner im obigen Code). Die Fehlermeldung blieb jedoch gleich.
Kann jemand bitte erklären?
(Bitte lassen Sie mich wissen, wenn diese Art von Fragen hier nicht erlaubt ist und bearbeitet werden soll. Danke)
Nun, vielleicht sollten Sie uns zeigen, in welchem Ordner Sie diese Funktion ausführen. Es sieht so aus, als ob Sie es über einige spezielle Ordner laufen lassen (ist es normal, dass '/ run/udev /' auch gescannt wird?) – zezollo
'/ run/udev/link.dvdrw' ist etwas mit einem DVD-Laufwerk zu tun (vielleicht ein Symlink?). Vielleicht führen Sie ['os.path.isfile'] (https://docs.python.org/3/library/os.path.html#os.path.isfile) aus, bevor Sie den Pfad zu' getsize' übergeben. –
zezollo, I führe diese Funktion im Root-Ordner von Linux Mint aus: size_scan ('/') –