使用 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)
我正在尝试做一个简单的脚本来迭代一个文件夹中的所有内容,然后如果一个元素是图像,它就会被移动到一个名为 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)