尝试使用 Shutil Python 模块移动文件时出现 FileNotFound 错误
FileNotFound error when trying to move files with the Shutil Python module
我写了下面的代码来识别和组织 gif 和图像文件。 cdir
指的是程序应该组织的目录。执行时,它应该在同一目录中创建文件夹 'Gifs' 和 'Images'。
import shutil, os
gifext = ['.gif', 'gifv']
picext = ['.png', '.jpg']
for file in files:
if file.endswith(tuple(gifext)):
if not os.path.exists(cdir+'\Gifs'):
os.makedirs(cdir + '\Gifs')
shutil.move(cdir + file, cdir + '\Gifs')
elif file.endswith(tuple(picext)):
if not os.path.exists(cdir+'\Images'):
os.makedirs(cdir + '\Images')
shutil.move(cdir + file, cdir + '\Images')
该目录包含文件:FIRST.gif、SECOND.gif 和 THIRD.jpg
但我收到以下错误:
File "test.py", line 16
shutil.move(cdir + file, cdir + '\Gifs')
File "C:\Users\stavr\AppData\Local\Programs\Python\Python36-32\lib\shutil.py", line 552, in move
copy_function(src, real_dst)
File "C:\Users\stavr\AppData\Local\Programs\Python\Python36-32\lib\shutil.py", line 251, in copy2
copyfile(src, dst, follow_symlinks=follow_symlinks)
File "C:\Users\stavr\AppData\Local\Programs\Python\Python36-32\lib\shutil.py", line 114, in copyfile
with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\stavr\Desktop\testFIRST.gif'
files
仅包含目录中文件的名称。 cdir
末尾没有反斜杠,因此,当您将 cdir
与 files
的元素连接时,您会得到一个可能无效的路径:
"C:\stuff\my\path" + "file_name.png"
# equals
"C:\stuff\my\pathfile_name.png"
后者显然不是你想要的,所以你应该以某种方式将反斜杠添加到 cdir
,可能像这样:
if not cdir.endswith("\"):
cdir += "\"
您的文件路径不正确。缺少路径分隔符。
shutil.move(os.path.join(cdir, file), os.path.join(cdir, 'Gifs'))
在错误报告之后,您的目录 "test" 和文件 "FIRST.gif":
之间的路径中缺少一个“\”
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'C:\Users\stavr\Desktop\testFIRST.gif'
您可以通过在输入路径时添加“\”来解决此问题:
Enter path to the directory: C:\Users\stavr\Desktop\test\
或
替换:
shutil.move(cdir + file, cdir + '\Gifs')
作者:
shutil.move(os.getcwd() + '/' + file, cdir + '\Gifs')
顺便说一句:
我认为这是一个“。”在 "gifv"
之前丢失
gifext = ['.gif', 'gifv']
我写了下面的代码来识别和组织 gif 和图像文件。 cdir
指的是程序应该组织的目录。执行时,它应该在同一目录中创建文件夹 'Gifs' 和 'Images'。
import shutil, os
gifext = ['.gif', 'gifv']
picext = ['.png', '.jpg']
for file in files:
if file.endswith(tuple(gifext)):
if not os.path.exists(cdir+'\Gifs'):
os.makedirs(cdir + '\Gifs')
shutil.move(cdir + file, cdir + '\Gifs')
elif file.endswith(tuple(picext)):
if not os.path.exists(cdir+'\Images'):
os.makedirs(cdir + '\Images')
shutil.move(cdir + file, cdir + '\Images')
该目录包含文件:FIRST.gif、SECOND.gif 和 THIRD.jpg
但我收到以下错误:
File "test.py", line 16
shutil.move(cdir + file, cdir + '\Gifs')
File "C:\Users\stavr\AppData\Local\Programs\Python\Python36-32\lib\shutil.py", line 552, in move
copy_function(src, real_dst)
File "C:\Users\stavr\AppData\Local\Programs\Python\Python36-32\lib\shutil.py", line 251, in copy2
copyfile(src, dst, follow_symlinks=follow_symlinks)
File "C:\Users\stavr\AppData\Local\Programs\Python\Python36-32\lib\shutil.py", line 114, in copyfile
with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\stavr\Desktop\testFIRST.gif'
files
仅包含目录中文件的名称。 cdir
末尾没有反斜杠,因此,当您将 cdir
与 files
的元素连接时,您会得到一个可能无效的路径:
"C:\stuff\my\path" + "file_name.png"
# equals
"C:\stuff\my\pathfile_name.png"
后者显然不是你想要的,所以你应该以某种方式将反斜杠添加到 cdir
,可能像这样:
if not cdir.endswith("\"):
cdir += "\"
您的文件路径不正确。缺少路径分隔符。
shutil.move(os.path.join(cdir, file), os.path.join(cdir, 'Gifs'))
在错误报告之后,您的目录 "test" 和文件 "FIRST.gif":
之间的路径中缺少一个“\”FileNotFoundError: [WinError 2] The system cannot find the file specified: 'C:\Users\stavr\Desktop\testFIRST.gif'
您可以通过在输入路径时添加“\”来解决此问题:
Enter path to the directory: C:\Users\stavr\Desktop\test\
或
替换:
shutil.move(cdir + file, cdir + '\Gifs')
作者:
shutil.move(os.getcwd() + '/' + file, cdir + '\Gifs')
顺便说一句: 我认为这是一个“。”在 "gifv"
之前丢失gifext = ['.gif', 'gifv']