Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FileNotFoundError: [WinError 2] The system cannot find the file specified:

import os

def rename(directory):
    for name in os.listdir(directory):
        print(name)
        os.rename(name,"0"+name)

        
path = input("Enter the file path")
rename(path)

I want to rename every file in a certain directory so that it adds a 0 to the beginning of the file name, however when I try to run the code it comes up with this error:

(FileNotFoundError: [WinError 2] The system cannot find the file specified: '0.jpg' -> '00.jpg')

I'm sure that there is a file in there named 0.jpg and I'm not sure what the problem is.

like image 432
Bracktus Avatar asked Feb 16 '16 21:02

Bracktus


3 Answers

You cannot use absolute path unless your terminal is in that directory. Hence you can do as following:

import os
def rename(directory):
    os.chdir(directory) # Changing to the directory you specified.
    for name in os.listdir(directory):
        print(name)
        os.rename(name,"0"+name)
like image 67
Aravindh nivas.M Avatar answered Nov 10 '22 02:11

Aravindh nivas.M


As written you're looking for a file named 0.jpg in the working directory. You want to be looking in the directory you pass in.

So instead do:

os.rename(os.path.join(directory,name), 
    os.path.join(directory,'0'+name))
like image 19
mechanical_meat Avatar answered Nov 10 '22 01:11

mechanical_meat


Agreeing with Bernie's answer that "filename" is used to mean the full/absolute path name. The below will also work.

os.rename((directory+name),(directory+'0'+name))
like image 1
Tad Avatar answered Nov 10 '22 03:11

Tad