Python – WindowsError: [Eroare 2] Sistemul nu poate găsi fișierul specificat (Programare, Python, Nume De Fișiere)

Matt a intrebat.

Am un dosar plin de fișiere pdf. Încerc să înlătur toate spațiile din numele fișierelor și să le înlocuiesc cu sublinieri. Iată ce am până acum:

import os, sys

folder = path to folder
FileList = os.listdir(folder)

for files in FileList:
    if ' ' in files:
        NewName = files.replace(" ", "_")
        os.rename(files, NewName)

Când execut acest script, primesc următoarea eroare:

WindowsError: [Error 2] The system cannot find the file specified

Presupun că există o rezolvare destul de simplă, dar m-am uitat peste tot și nu pot găsi o soluție pentru viața mea.

Vă mulțumim pentru ajutor!

Comentarii

  • cwd/folder/file nu poate fi găsit în cwd/file. –  > Por Łukasz Rogalski.
4 răspunsuri
Ignacio Vazquez-Abrams

os.rename(os.path.join(folder, files), os.path.join(folder, NewName))

jatin

doar schimbați directorul în cel în care trebuie redenumite fișierele și apoi urmați codul.

utilizați: os.chdir("destinationFolder").

Arnold

Am găsit o soluție simplă pentru cazul meu. Voiam să redenumesc fișiere și tot primeam WindowsError: [Eroare 2]. Pur și simplu schimbând directorul curent cu

os.chdir(currdir)

și apoi să nu încerc să lucrez cu calea completă a rezolvat problema. Iată liniile de script relevante

if(os.path.exists(wd)) == 0:
print(wd+" DOES NOT EXIST!!")
sys.exit()

directories = [x[0] for x in os.walk(wd)]
ld = len(directories)
dsorted = sorted(directories)
print(dsorted)

for num in range(1,ld):
    currdir = dsorted[num]
    print("Working on Directory  "+currdir)
    os.chdir(currdir)
    filenames = next(os.walk(currdir))[2]
    l = len(filenames)

    for num in range(0,l):

        name = filenames[num]
        print("Present file  "+name)
        modtime = os.path.getmtime(name);print(modtime)
        moddate =datetime.datetime.fromtimestamp(modtime).strftime('%Y %m %d')
        moddate = moddate.replace(" ", "")
        print(moddate)

        namesplit = name.split(".")

        base = namesplit[0]
        newbase = base+"_"+moddate   
        newname = newbase+"."+namesplit[1]
        print(newname)       

        os.rename(name,newname)
        input()

Anton Protopopopov

Redenumirea fișierelor din directorul curent, dar citirea în folder. Trebuie să adăugați la os.rename calea de acces la dosar sau la început os.chdir(folder) și apoi să folosiți doar os.listdir() și os.rename