python - os.path.isfile(Path/to/image) 给出 False 而 os.path.isdir(/directory image is in is true)
问题描述
...
from google.colab import drive
drive.mount('/content/drive', force_remount=True)
# Commented out IPython magic to ensure Python compatibility.
# %cd /content
!ls
!cat ttt.txt
!ls
Path2 = "/content/drive/MyDrive/foop/train/"
Path1 = "/content/drive/MyDrive/food-101/images/"
#print(os.path.isdir(Path2))
for i in range(len(L)):
#path1 = str(Path1) + str(L[i]) + str('/') #+ str(Train[i][1])
path2 = str(Path2) + str(L[i]) + str('/') #+ str(Train[i][1])
print(path2)
print(os.path.isdir(path2))
if not os.path.exists(path2):
os.makedirs(path2)
print(os.path.exists(path2))
'''
for i in range(len(Train)%100):
path1 = str(Path1) + str(Train[i][0]) + str('/') #+ str(Train[i][1])
path2 = str(Path2) + str(Train[i][0]) + str('/') #+ str(Train[i][1])
path1 = str(path1)
path2 = str(path2)
#print(os.path.isdir(path1))
#print(os.path.isdir(path2))
if not (os.path.isdir(path2)):
#pass
#!mkdir path2
#print(os.path.isdir(path1))
print(os.path.isdir(path2))
#!cp path1 path2
#shutil.copy(path1, path2)
'''
for i in range(len(Train)):
path1 = str(Path1) + str(Train[i][0]) + str('/') + str(Train[i][1])
path2 = str(Path2) + str(Train[i][0]) + str('/') + str(Train[i][1])
path1 = str(path1)
path2 = str(path2)
#print(os.path.isdir(path1))
#print(os.path.isdir(path2))
#print(os.path.isdir(path2))
#pass
#!mkdir path2
#print(str(Train[i][1]))
#print(os.path.isdir(path1))
if (str(Train[i][0])=="baklava"):
#print(str(Train[i][1]))
**print(os.path.isfile(Path1+"/"+"baklava"+"/"+"1117620.jpg"))**
#!cp path1 path2
#shutil.copy(path1, path2)
...
错误是:
os.path.isdir(Path1+"/"+"baklava"+"/") 给出 True
但-
os.path.isfile(Path1+"/"+"baklava"+"/"+"1117620.jpg") 给出 False
我也按照另一个答案中的建议尝试了这个:
...
P2 = os.path.join('/content', 'drive', 'MyDrive', 'foop', 'train')
P1 = os.path.join('/content', 'drive', 'MyDrive', 'food-101', 'images')
for i in range(len(Train)):
#path1 = str(Path1) + str(Train[i][0]) + str('/') + str(Train[i][1])
#path2 = str(Path2) + str(Train[i][0]) + str('/') + str(Train[i][1])
#path1 = str(path1)
#path2 = str(path2)
#print(path1)
#print(os.path.isfile(path1))
#print(os.path.isdir(path2))
#print(os.path.isdir(path2))
#pass
#!mkdir path2
#print(str(Train[i][1]))
#print(os.path.isdir(path1))
#print(str(Train[i][1]))
#!cp path1 path2
#shutil.copy(path1, path2)
P = os.path.join(P1, str(Train[i][0]), str(str(Train[i][1] + '.jpg')))
print(os.path.isdir(P1))
print(P)
print(os.path.isfile(P))
...
输出 -
真 /content/drive/MyDrive/food-101/images/waffles/888311.jpg 假真 /content/drive/MyDrive/food-101/images/waffles/903293.jpg 假真 /content/drive/MyDrive/food- 101/images/waffles/923472.jpg 假真 /content/drive/MyDrive/food-101/images/waffles/940186.jpg 假真 /content/drive/MyDrive/food-101/images/waffles/948929.jpg 假真 /content/drive/MyDrive/food-101/images/waffles/957965.jpg 假真 /content/drive/MyDrive/food-101/images/waffles/97524.jpg 假真 /content/drive/MyDrive/food- 101/images/waffles/98131.jpg 假 真 /content/drive/MyDrive/food-101/images/waffles/982668.jpg 假
也为此
... P2 = os.path.join('/content', 'drive', 'MyDrive', 'foop', 'train')
P1 = os.path.join('/content', 'drive', 'MyDrive', 'food-101', 'images')
for i in range(len(Train)):
#path1 = str(Path1) + str(Train[i][0]) + str('/') + str(Train[i][1])
#path2 = str(Path2) + str(Train[i][0]) + str('/') + str(Train[i][1])
#path1 = str(path1)
#path2 = str(path2)
#print(path1)
#print(os.path.isfile(path1))
#print(os.path.isdir(path2))
#print(os.path.isdir(path2))
#pass
#!mkdir path2
#print(str(Train[i][1]))
#print(os.path.isdir(path1))
#print(str(Train[i][1]))
#!cp path1 path2
#shutil.copy(path1, path2)
P = os.path.join(P1, str(Train[i][0]), str(str(Train[i][1] + '.jpg')))
PP1 = os.path.join(P1, str(Train[i][0]))
PP2 = os.path.join(P2, str(Train[i][0]))
print(os.path.isdir(P1))
print(os.path.isdir(PP1))
print(os.path.isdir(PP2))
print(P)
print(os.path.isfile(P))
...
Output :
True for isdir() false for isfile()
'''
True
True
True
/content/drive/MyDrive/food-101/images/takoyaki/1002167.jpg
False
True
True
True
/content/drive/MyDrive/food-101/images/takoyaki/1012802.jpg
False
True
True
True
/content/drive/MyDrive/food-101/images/takoyaki/102284.jpg
False
True
True
True
/content/drive/MyDrive/food-101/images/takoyaki/1034768.jpg
False
True
True
True
/content/drive/MyDrive/food-101/images/takoyaki/1045631.jpg
False
True
True
True
/content/drive/MyDrive/food-101/images/takoyaki/1068834.jpg
False
True
True
True
/content/drive/MyDrive/food-101/images/takoyaki/1096319.jpg
False
True
True
True
/content/drive/MyDrive/food-101/images/takoyaki/1113665.jpg
False
True
True
True
/content/drive/MyDrive/food-101/images/takoyaki/1126334.jpg
False
True
True
True
/content/drive/MyDrive/food-101/images/takoyaki/1140791.jpg
False
True
True
True
/content/drive/MyDrive/food-101/images/takoyaki/114959.jpg
False
True
True
True
/content/drive/MyDrive/food-101/images/takoyaki/1169507.jpg
False
True
True
True
/content/drive/MyDrive/food-101/images/takoyaki/1184113.jpg
False
True
True
True
/content/drive/MyDrive/food-101/images/takoyaki/119195.jpg
False
True
True
True
/content/drive/MyDrive/food-101/images/takoyaki/1216488.jpg
False
'''
解决方案
正如 Kemp 所说,您应该检查路径实际上是否指向现有文件。无论如何,您应该检查Pathlib而不是os.path
. 在使用路径时,它将为您节省大量时间。
推荐阅读
- python - 在python中以变量名存储目录中的文件
- php - 无法使用 codeigniter 验证码助手创建验证码
- android-studio - 简单的调试断点条件给了我“未使用的等于表达式”
- python-3.x - 有没有一种有效的方法来过滤列表中的最大数字
- python - python删除大多数列是nans的行
- angular - 在 Angular 模板中递增和连接整数列表
- gitlab - 恢复备份后 GitLab 错误获取变量
- java - 在 Eclipse 插件的 ViewPart 中更改 Swing JPanel 的大小(尽管 SwingUtilities.invokeLater(Runnable()))
- java - 有没有办法在 Java 图形形状上投射光线?
- java - Netbeans 8.2 安装本机库问题