我想将一些图片从目录复制到另一个目录,这是我的代码:
import os.path
import shutil
def copyFile(sourceDir,targetDir):
for files in os.listdir(sourceDir):
sourceFile=os.path.join(sourceDir,files)
if os.path.isfile(sourceFile) and sourceFile.find('.jpg')>0:
shutil.copy(sourceFile,targetDir)
for i in os.listdir('/Users/liuchong/Desktop/LFW/new'):
copyFile(i,'/Users/liuchong/Desktop/LFW/lfw')
但是当我运行它时,终端告诉我OSError: [Errno 20] Not a directory: '.DS_Store'
我知道'DS_dstore'是Mac中的隐藏文件,但我该如何解决这个错误呢?
答案 0 :(得分:1)
值得一提的是“ Not a directory”错误(Errno 20)的一般含义是什么。这意味着您正在尝试使用一个路径,该路径的子路径是实际文件而不是目录。那是格式错误的错误路径。
示例:file.txt / test.txt,其中file.txt是现有的真实文件(不是目录)。
对于具有此类文件的每个I / O操作,Python都会返回此错误:
$ python -c 'import os; os.path.getsize("file.txt/test.txt");'
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python2.7/genericpath.py", line 57, in getsize
return os.stat(filename).st_size
OSError: [Errno 20] Not a directory: 'file.txt/test.txt'
操作系统还将返回此错误:
$ stat file.txt/test.txt
stat: cannot stat 'file.txt/test.txt': Not a directory
每次出现此错误都意味着您将文件+文件连接到程序中的某个位置。
此错误是特定于Unix OS的。在Windows上,您应针对此类格式错误的路径显示“找不到文件”。
答案 1 :(得分:0)
你的逻辑似乎严重受损。您遍历目录中的所有文件,将每个文件传递给copyFile
。但是里面那个函数,你再次尝试遍历传递给函数的“目录”中的每个文件:除了你没有只将目录传递给函数,你传递的每个文件都是在原始目录中。
目前还不清楚你要做什么,但我认为你需要删除其中一个对listdir
和相关循环的调用。
答案 2 :(得分:0)
执行global
时,它会返回目录和文件。在将其作为参数传递之前,您必须检查目录条目。
g++ -std=c++11 -Wall -Wextra -pedantic -g
答案 3 :(得分:0)
os.listdir('/Users/liuchong/Desktop/LFW/lfw')
返回一个列表,其中包含用户指定的目录中的条目名称。列表基于随机选择。
要解决这个问题(我知道我迟到了)这里有一个python 3
兼容代码: -
import time
import os
from shutil import copyfile
def Copyfile(in_path, out_path, quantity = None):
filelist = os.listdir(in_path)
counter = 0
print("Copying to %r directory. Please wait... " % out_path)
start = time.time()
for i in range(quantity):
copyfile(filelist[i], out_path+filelist[i])
counter+=1
sys.stdout.write("\rTotal images copied : %r" % counter)
sys.stdout.flush()
end = time.time()
print("This move operation took %r seconds to run." %(end - start))