Nicholas Vital
Nicholas Vital

Reputation: 17

How to move a file from one directory to another?

I am trying to make a script that gets all the pictures of my Images folder that have the jpg extension and moves them in the newimages folder.

Here is my code:

import os import shutil

for filename in os.listdir("D:/Images/"):
    if filename.endswith(".jpg"):
        shutil.move(filename, r'D:/newimages/')

However when I run the code, I get the following error:

Traceback (most recent call last):
  File "d:\Online_courses\Coursera\Google_IT_Automation\Automating_real-world_tasks_with_python\project1\script1.py", line 9, in <module>
    shutil.move(filename, r'D:/newimages/')
  File "C:\Users\Nicholas\AppData\Local\Programs\Python\Python37\lib\shutil.py", line 580, in move
    copy_function(src, real_dst)
  File "C:\Users\Nicholas\AppData\Local\Programs\Python\Python37\lib\shutil.py", line 266, in copy2
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "C:\Users\Nicholas\AppData\Local\Programs\Python\Python37\lib\shutil.py", line 120, in copyfile
    with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: '20180331_164750.jpg'

Upvotes: 0

Views: 60

Answers (2)

Beliaev Maksim
Beliaev Maksim

Reputation: 1569

when you use a filename it will just take a name. For copying you need a full path. Please try the same but with

for filename in os.listdir("D:/Images/"):
    if filename.endswith(".jpg"):
        shutil.move(os.path.join("D:/Images/", filename), os.path.join("D:/NewImages/", filename))

Upvotes: 1

boot-scootin
boot-scootin

Reputation: 12515

You need to append 'D:/Images/' to each filename. You're not in the D:/Images/ directory so Python isn't able to find those files.

old_dir = 'D:/Images'
new_dir = 'D:/newimages'
for filename in os.listdir(old_dir):
    if filename.endswith(".jpg"):
        shutil.move(f'{old_dir}/{filename}', new_dir)

Upvotes: 1

Related Questions