【问题标题】:os.path.isfile(Path/to/image) gives False while os.path.isdir(The/directory image is in is true)os.path.isfile(Path/to/image) 给出 False 而 os.path.isdir(/directory image is in is true)
【发布时间】:2021-07-13 18:52:38
【问题描述】:

...

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 - 我在安装驱动器后加载了我的文件。

标签: python pytorch google-colaboratory


【解决方案1】:

正如 Kemp 所说,您应该检查路径实际上是否指向现有文件。无论如何,您应该检查Pathlib 而不是os.path。使用路径时,它将为您节省大量时间。

【讨论】:

    猜你喜欢
    • 2022-12-02
    • 2015-03-22
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-26
    • 2021-12-04
    • 1970-01-01
    相关资源
    最近更新 更多