【问题标题】:How to open a random Image from a given file directory?如何从给定的文件目录中打开随机图像?
【发布时间】:2017-04-21 07:52:49
【问题描述】:

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

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:\Users\rkp10\AppData\Local\Google\Chrome\User Data\Default\Extensions\laookkfknpbbblfpciffpaejjkokdgca\0.91.6_0\backgrounds\*.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()

但又出现如下错误:

Traceback(最近一次调用最后一次):文件“G:\Grade 12 Project\auto.py",第 4 行,在 a=random.choice(os.listdir(folder)) WindowsError: [错误 123] 文件名、目录名或卷标语法不正确: 'C:\Users\rkp10\AppData\Local\Google\Chrome\User 数据\默认\扩展\laookkfknpbbblfpciffpaejjkokdgca'

这里(黄色高亮部分)是存储我的图像的目录。

【问题讨论】:

  • 你有未转义的反斜杠。除非 Python 以不同方式处理,否则您需要在每个现有反斜杠之后添加第二个反斜杠,或者将它们设为正斜杠。
  • @Carcigenicate,我尝试了你所说的但得到了错误(我已编辑)
  • 编辑 2 对我来说很好用,你确定给你的目录结构不包含任何错别字吗?
  • @ABcDexter 会为你打开图片吗?
  • 不,它没有。但是还有其他方法起作用,将其写为答案。

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


【解决方案1】:

您需要通过在字符串前面加上 r 来使用原始字符串:

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

否则,您需要将每个反斜杠转义为另一个反斜杠。

【讨论】:

  • 嘿!我现在收到此错误WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect: 'C:\\Users\\rkp10\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Extensions\\laookkfknpbbblfpciffpaejjkokdgca\\0.91.6_0\\backgrounds\\*.png/*.* 我不知道出了什么问题?我只是希望它从我提供的目录中打开任何随机图像。
【解决方案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() 的标志,它可以是 found here
  3. 在编辑 3 中,请确保在字符串之前使用 r。

在你的情况下,使用这个:

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

【讨论】:

  • 我已经尝试并在编辑中放弃了我的结果,请检查它。感谢您的时间。
  • @WhiteShadow 等等,背景之前有一个文件夹,对吧?
  • 您没有使用正确的文件夹路径,就是这样。
  • 是的,我有一个文件夹。
  • 但是在编辑中,你写的路径不对。
猜你喜欢
  • 2021-12-07
  • 2019-06-04
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 2015-10-03
  • 2019-04-16
  • 1970-01-01
  • 2019-12-03
相关资源
最近更新 更多