IsADirectoryError: [Errno 21] Is a directory ERROR when trying to copy images into another file
IsADirectoryError: [Errno 21] Is a directory ERROR when trying to copy images into another file
我正在尝试将源文件的 90% 的图像复制到训练文件夹中,但出现以下错误:
IsADirectoryError Traceback (most recent call last)
<ipython-input-24-e1fe9ed34fea> in <module>
50
51 split_size = .9
---> 52 split_data(CAT_SOURCE_DIR, TRAINING_CATS_DIR, TESTING_CATS_DIR, split_size)
53 split_data(DOG_SOURCE_DIR, TRAINING_DOGS_DIR, TESTING_DOGS_DIR, split_size)
<ipython-input-24-e1fe9ed34fea> in split_data(SOURCE, TRAINING, TESTING, SPLIT_SIZE)
33 for i in training_set:
34 if os.path.getsize(SOURCE + i) != 0:
---> 35 copyfile(SOURCE+i, TRAINING)
36
37 for j in testing_set:
/usr/lib/python3.6/shutil.py in copyfile(src, dst, follow_symlinks)
119 else:
120 with open(src, 'rb') as fsrc:
--> 121 with open(dst, 'wb') as fdst:
122 copyfileobj(fsrc, fdst)
123 return dst
IsADirectoryError: [Errno 21] Is a directory: '/tmp/cats-v-dogs/training/cats'
这是我的代码:
def split_data(SOURCE, TRAINING, TESTING, SPLIT_SIZE):
list = os.listdir(SOURCE)
images_list = random.sample(list, len(list))
training_set = []
testing_set = []
split_len = int(SPLIT_SIZE*len(list))
for image in range(len(list)):
if image >= split_len:
testing_set.append(list[image])
else:
training_set.append(list[image])
for i in training_set:
if os.path.getsize(SOURCE + i) != 0:
copyfile(SOURCE+i, TRAINING)
for j in testing_set:
if os.path.getsize(SOURCE + j) != 0:
copyfile(SOURCE+j, TESTING)
CAT_SOURCE_DIR = "/tmp/PetImages/Cat/"
TRAINING_CATS_DIR = "/tmp/cats-v-dogs/training/cats"
TESTING_CATS_DIR = "/tmp/cats-v-dogs/testing/cats"
DOG_SOURCE_DIR = "/tmp/PetImages/Dog/"
TRAINING_DOGS_DIR = "/tmp/cats-v-dogs/training/dogs"
TESTING_DOGS_DIR = "/tmp/cats-v-dogs/testing/dogs"
split_size = .9
split_data(CAT_SOURCE_DIR, TRAINING_CATS_DIR, TESTING_CATS_DIR, split_size)
split_data(DOG_SOURCE_DIR, TRAINING_DOGS_DIR, TESTING_DOGS_DIR, split_size)
我认为错误在函数 copyfile() 中,但我确信我将正确的路径作为参数,其中 copyfile(SOURCE+i, TRAINING)
应该将源文件中的图像复制到训练目录.
我将不胜感激任何帮助!
谢谢!
您使用的 copyfile
目标路径错误。
根据 Python 文档,您需要提供带文件名的完整路径。
TRAINING_CATS_DIR
是一个目录,所以它给出了 IsADirectoryError
旁注:不要使用 list
作为列表变量。 list
是 Python 中的内置变量。
将图像名称加入源路径和目标路径
copyfile(os.path.join(source,i) ,os.path.join(training,i))
我正在尝试将源文件的 90% 的图像复制到训练文件夹中,但出现以下错误:
IsADirectoryError Traceback (most recent call last)
<ipython-input-24-e1fe9ed34fea> in <module>
50
51 split_size = .9
---> 52 split_data(CAT_SOURCE_DIR, TRAINING_CATS_DIR, TESTING_CATS_DIR, split_size)
53 split_data(DOG_SOURCE_DIR, TRAINING_DOGS_DIR, TESTING_DOGS_DIR, split_size)
<ipython-input-24-e1fe9ed34fea> in split_data(SOURCE, TRAINING, TESTING, SPLIT_SIZE)
33 for i in training_set:
34 if os.path.getsize(SOURCE + i) != 0:
---> 35 copyfile(SOURCE+i, TRAINING)
36
37 for j in testing_set:
/usr/lib/python3.6/shutil.py in copyfile(src, dst, follow_symlinks)
119 else:
120 with open(src, 'rb') as fsrc:
--> 121 with open(dst, 'wb') as fdst:
122 copyfileobj(fsrc, fdst)
123 return dst
IsADirectoryError: [Errno 21] Is a directory: '/tmp/cats-v-dogs/training/cats'
这是我的代码:
def split_data(SOURCE, TRAINING, TESTING, SPLIT_SIZE):
list = os.listdir(SOURCE)
images_list = random.sample(list, len(list))
training_set = []
testing_set = []
split_len = int(SPLIT_SIZE*len(list))
for image in range(len(list)):
if image >= split_len:
testing_set.append(list[image])
else:
training_set.append(list[image])
for i in training_set:
if os.path.getsize(SOURCE + i) != 0:
copyfile(SOURCE+i, TRAINING)
for j in testing_set:
if os.path.getsize(SOURCE + j) != 0:
copyfile(SOURCE+j, TESTING)
CAT_SOURCE_DIR = "/tmp/PetImages/Cat/"
TRAINING_CATS_DIR = "/tmp/cats-v-dogs/training/cats"
TESTING_CATS_DIR = "/tmp/cats-v-dogs/testing/cats"
DOG_SOURCE_DIR = "/tmp/PetImages/Dog/"
TRAINING_DOGS_DIR = "/tmp/cats-v-dogs/training/dogs"
TESTING_DOGS_DIR = "/tmp/cats-v-dogs/testing/dogs"
split_size = .9
split_data(CAT_SOURCE_DIR, TRAINING_CATS_DIR, TESTING_CATS_DIR, split_size)
split_data(DOG_SOURCE_DIR, TRAINING_DOGS_DIR, TESTING_DOGS_DIR, split_size)
我认为错误在函数 copyfile() 中,但我确信我将正确的路径作为参数,其中 copyfile(SOURCE+i, TRAINING)
应该将源文件中的图像复制到训练目录.
我将不胜感激任何帮助!
谢谢!
您使用的 copyfile
目标路径错误。
根据 Python 文档,您需要提供带文件名的完整路径。
TRAINING_CATS_DIR
是一个目录,所以它给出了 IsADirectoryError
旁注:不要使用 list
作为列表变量。 list
是 Python 中的内置变量。
将图像名称加入源路径和目标路径
copyfile(os.path.join(source,i) ,os.path.join(training,i))