Ich schreibe den folgenden Code, um die Ziffern und Sonderzeichen zu entfernen, wenn sie am Anfang eines Dateinamens erscheinen. Ich habe eine funktionierende Version des Codes, aber ich versuchte einige Dinge und ich bemerkte etwas, das mich verwirrte.FileNotFoundError - wenn ich nicht os.chdir zu VERZEICHNIS
Unten ist der Code, der gut funktioniert.
import re
import os
DIR = 'C:\Rohit\Study\Python\Python_Programs\Basics\OOP'
os.chdir(DIR)
for file in os.listdir(DIR):
if os.path.isfile(os.path.join(DIR, file)):
fname, ext = os.path.splitext(file)
fname = re.sub(r'(^[0-9. _-]*)(?=[A-Za-z])', "", fname)
new_name = fname + ext
os.rename(file, new_name)
aber wenn ich entfernen Sie einfach die Zeile os.chdir(DIR)
von oben Code, starte ich den unten Fehler.
FileNotFoundError: [WinError 2] The system cannot find the file specified: '6738903-. --__..76 test.py'
Unten ist der Code, der den Fehler auslöst.
DIR_PATH = r'C:\Rohit\Study\Python\Python_Programs\Basics\OOP'
for file in os.listdir(DIR):
if os.path.isfile(os.path.join(DIR, file)):
fname, ext = os.path.splitext(file)
fname = re.sub(r'(^[0-9. _-]*)(?=[A-Za-z])', "", fname)
new_name = fname + ext
os.rename(file, new_name)
Der Fehler wird in der Zeile os.rename()
generiert. Also kann mir bitte jemand vorschlagen, was mache ich hier falsch?
Vielen Dank, meine schlechte ich habe es einfach nicht angesehen, offensichtlich os.rename (Datei, neuer_Name) würde die Datei im aktuellen Pfad finden. Entschuldigung, mein fehler. – Rohit
@Rohit auch nicht, dass Anis verwendet rohe Präfixe für Pfade, so dass er nicht alle Großbuchstaben nach dem Backslash um die Problemumgehung der "seltsame Problem" :) –
beachten Sie bitte, dass chdir ist schlechte Praxis: Was ist, wenn ein anderes Modul eine andere aktuelle erwartet Verzeichnis? Das wird ein Chdir-Kampf sein. Um jeden Preis vermeiden. –