如何从给定的文件目录中打开随机图像?

时间:2016-12-06 15:46:00

标签: python python-2.7 directory operating-system windowserror

我正在尝试从此目录中打开图像,但我无法做到。 它给了我以下错误:

  

WindowsError:[错误123]文件名,目录名或卷   标签语法不正确。

这是我的代码:

import os, random
random.choice(os.listdir("C:\\Users\rkp10\AppData\Local\Google\Chrome\User Data\Default\Extensions\laookkfknpbbblfpciffpaejjkokdgca\0.91.6_0\backgrounds"+'png'))

在这里,在文件夹背景中有很多图像。我想要一个随机的图像打开。但是在运行程序时,我得到的是WindowsError

我做错了什么?

编辑1

我试过了:

random.choice(os.listdir(r"C:\Users\rkp10\AppData\Local\Google\Chrome\User Data\Default\Extensions\laookkfknpbbblfpciffpaejjkokdgca\0.91.6_0\backgrounds"+'png'))

但我得到了错误:

  

WindowsError:[错误123]文件名,目录名或卷   标签语法不正确:   “C:\用户\ rkp10 \应用程序数据\本地\谷歌\镀铬\用户   数据\默认\扩展\ laookkfknpbbblfpciffpaejjkokdgca \ 0.91.6_0 \背景\ *。PNG /

编辑2

我试过了:

import os, random

a=random.choice(os.listdir(r"C:\Users\rkp10\AppData\Local\Google\Chrome\User Data\Default\Extensions\laookkfknpbbblfpciffpaejjkokdgca\0.91.6_0\backgrounds"))
os.open(a)

现在我没有收到错误,但它也没有打开图像。

编辑3

我也尝试过:

 import random,os
folder= "C:\\Users\rkp10\AppData\Local\Google\Chrome\User Data\Default\Extensions\laookkfknpbbblfpciffpaejjkokdgca\0.91.6_0\backgrounds"
a=random.choice(os.listdir(folder))
print(a)

from PIL import Image
file = folder+'\\'+a
Image.open(file).show()

    #os.open(a, os.O_RDWR)
    from PIL import Image
    file = folder+'\\'+a
    Image.open(file).show()

但又一次出现了以下错误:

  

回溯(最近一次呼叫最后一次):文件“G:\ Grade 12   Project \ auto.py“,第4行,in       a = random.choice(os.listdir(folder))WindowsError:[错误123]文件名,目录名或卷标语法不正确:   “C:\用户\ rkp10 \应用程序数据\本地\谷歌\镀铬\用户   数据\默认\扩展\ laookkfknpbbblfpciffpaejjkokdgca'

此处(黄色突出显示部分)是存储图像的目录。

Image of Directory

2 个答案:

答案 0 :(得分:2)

改为使用PIL

import os, random

folder=r"D:\Study\SO"

a=random.choice(os.listdir(folder))
print(a)

#os.open(a, os.O_RDWR)
from PIL import Image
file = folder+'\\'+a
Image.open(file).show()

源: Open and display .png file in python using PIL

这个问题是a没有选择随机文件的绝对路径。

  1. 在编辑1中,“png”连接但没有名为“backgroundspng”的文件夹
  2. 在编辑2中,您没有给出os.open()的{​​{3}}标记。
  3. 在编辑3中,请确保您使用字符串前的r。
  4. 在你的情况下,请使用:

    folder = r"C:\\Users\rkp10\AppData\Local\Google\Chrome\User Data\Default\Extensions\laookkfknpbbblfpciffpaejjkokdgca\0.91.6_0\backgrounds" 
    

答案 1 :(得分:0)

您需要使用r前缀字符串来使用原始字符串:

random.choice(os.listdir(r"C:\Users\rkp10\AppData\Local\Google\Chrome\User Data\Default\Extensions\laookkfknpbbblfpciffpaejjkokdgca\0.91.6_0\backgrounds"+'png'))

否则,你需要通过另一个反斜杠来逃避每个反斜杠。