You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

随机选取文件触发FileNotFoundError错误的技术求助

随机选取文件提示“文件不存在”的修复方案

问题根源

os.listdir() 仅返回目标目录内的纯文件名,不包含文件所在的完整路径。直接用这些文件名调用open()时,程序会在当前工作目录(而非media/images或media/videos目录)下查找文件,导致找不到目标文件。

修复方法

方法1:拼接完整文件路径(推荐)

通过os.path.join()将目录路径与文件名拼接,生成完整的文件路径后再打开:

import os
import random

# 定义目标目录路径(使用完整路径则写"D:/folder/media/videos")
video_dir = "media/videos"
image_dir = "media/images"

# 获取带完整路径的文件列表
video_files = [os.path.join(video_dir, filename) for filename in os.listdir(video_dir)]
image_files = [os.path.join(image_dir, filename) for filename in os.listdir(image_dir)]

# 随机选取并打开文件
random1 = open(random.choice(video_files))
random2 = open(random.choice(image_files))
random3 = open(random.choice(image_files))

方法2:切换工作目录(不推荐)

先切换到目标文件所在目录,再执行文件操作:

import os
import random

# 切换到视频目录
os.chdir("media/videos")
video_files = os.listdir()
random1 = open(random.choice(video_files))

# 切换到图片目录
os.chdir("../images")
image_files = os.listdir()
random2 = open(random.choice(image_files))
random3 = open(random.choice(image_files))

额外注意事项

  • 若目标目录包含子文件夹,需过滤掉非文件项,避免open()报错:
    image_files = [os.path.join(image_dir, f) for f in os.listdir(image_dir) if os.path.isfile(os.path.join(image_dir, f))]
    
  • 使用完整路径时,直接替换video_dir和image_dir的值即可,os.path.join会自动适配系统路径分隔符。

内容的提问来源于stack exchange,提问作者user18589820

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 05:15:35