In [1]:
import shutil
import os

In [2]:
os.makedirs('temp/dir1/dir', exist_ok=True)
os.makedirs('temp/dir2', exist_ok=True)

In [3]:
with open('temp/dir1/file.txt', 'w') as f:
    f.write('original')

In [4]:
print(os.listdir('temp/dir1/'))


['file.txt', 'dir']

In [5]:
print(os.listdir('temp/dir2/'))


[]

In [6]:
new_path = shutil.move('temp/dir1/file.txt', 'temp/dir2/')

In [7]:
print(new_path)


temp/dir2/file.txt

In [8]:
print(os.listdir('temp/dir1/'))


['dir']

In [9]:
print(os.listdir('temp/dir2/'))


['file.txt']

In [10]:
# new_path = shutil.move('temp/dir2/file.txt', 'temp/dir1/new_dir/')
# FileNotFoundError: [Errno 2] No such file or directory: 'temp/dir1/new_dir/'

In [11]:
new_path = shutil.move('temp/dir1/dir/', 'temp/dir2/')

In [12]:
print(new_path)


temp/dir2/dir

In [13]:
print(os.listdir('temp/dir1/'))


[]

In [14]:
print(os.listdir('temp/dir2/'))


['file.txt', 'dir']

In [15]:
new_path = shutil.move('temp/dir2/file.txt', 'temp/dir1/file_new.txt')

In [16]:
print(new_path)


temp/dir1/file_new.txt

In [17]:
print(os.listdir('temp/dir1/'))


['file_new.txt']

In [18]:
print(os.listdir('temp/dir2/'))


['dir']

In [19]:
# new_path = shutil.move('temp/dir1/file_new.txt', 'temp/dir2/dir_new/file_new.txt')
# FileNotFoundError: [Errno 2] No such file or directory: 'temp/dir2/dir_new/file_new.txt'

In [20]:
new_path = shutil.move('temp/dir2/dir/', 'temp/dir1/dir_new/')

In [21]:
print(new_path)


temp/dir1/dir_new/

In [22]:
print(os.listdir('temp/dir1/'))


['dir_new', 'file_new.txt']

In [23]:
print(os.listdir('temp/dir2/'))


[]

In [24]:
new_path = shutil.move('temp/dir1/dir_new', 'temp/dir2/dir_new/dir_new2/')

In [25]:
print(new_path)


temp/dir2/dir_new/dir_new2/

In [26]:
print(os.listdir('temp/dir1/'))


['file_new.txt']

In [27]:
print(os.listdir('temp/dir2/'))


['dir_new']

In [28]:
print(os.listdir('temp/dir2/dir_new/'))


['dir_new2']

In [29]:
with open('temp/dir2/file_other.txt', 'w') as f:
    f.write('other')

In [30]:
new_path = shutil.move('temp/dir1/file_new.txt', 'temp/dir2/file_other.txt')

In [31]:
print(new_path)


temp/dir2/file_other.txt

In [32]:
print(os.listdir('temp/dir1/'))


[]

In [33]:
print(os.listdir('temp/dir2/'))


['file_other.txt', 'dir_new']

In [34]:
with open('temp/dir2/file_other.txt') as f:
    print(f.read())


original

In [35]:
shutil.rmtree('temp/dir1/')
shutil.rmtree('temp/dir2/')