使用 shutil 在 Python 的新文件夹中移动文件

moving files in a new folder in Python using shutil

我正在尝试做一个简单的脚本来迭代一个文件夹中的所有内容,然后如果一个元素是图像,它就会被移动到一个名为 images 的子文件夹(在原始文件夹内),而如果是视频,它会被移动到名为 videos 的子文件夹(在原始文件夹内)。 这是我的代码:

import os
import shutil

path = input('file path to sort: ')
list = os.listdir(path)

fin_img_path = os.mkdir(path+'\images')
fin_vid_path = os.mkdir(path+'\videos')

for i in list:
    print(i)
    if i.endswith('.jpg'):
        new_path = shutil.move(f"{path}/{i}", fin_img_path)
    elif i.endswith('.mp4') or i.endswith('.mkv'):
        new_path = shutil.move(f"{path}/{i}", fin_img_path)
    print(new_path)

print('images and videos divided')

但是我收到此错误消息:

file path to sort: C:\Users\utente\Pictures\Saved Pictures\Images_Videos
1.jpg
Traceback (most recent call last):
  File "c:\vscode\PYTHON\image-videos.py", line 13, in <module>
    new_path = shutil.move(f"{path}/{i}", fin_img_path)
  File "C:\Python310\lib\shutil.py", line 791, in move
    if os.path.isdir(dst):
  File "C:\Python310\lib\genericpath.py", line 42, in isdir
    st = os.stat(s)
TypeError: stat: path should be string, bytes, os.PathLike or integer, not NoneType

有人知道如何解决这个问题吗?

os.mkdir() 是程序调用,returns None,因此你的错误。您需要将文件路径的名称提供给 shutil.move(),例如

fin_img_path = path+'\images'
fin_vid_path = path+'\videos'
os.mkdir(fin_img_path)
os.mkdir(fin_vid_path)