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

使用os.path.getsize()时路径含通配符报错:OSError求助

解决方法:获取CSV目录下唯一文件的大小(无需硬编码文件名)

嘿,我懂你碰到的问题了——os.path.getsize() 不支持直接传入带通配符的路径,所以你直接传./CSV/*.csv才会抛出那个路径语法错误。既然你说目录下固定只有一个CSV文件,那我们可以用glob或者pathlib来定位这个文件,再获取它的大小,具体方案如下:

方案1:使用glob模块(兼容大多数Python版本)

glob.glob()会返回所有匹配通配符的文件路径字符串,我们只需要取列表里的第一个元素(因为只有一个文件),再传给os.path.getsize()就行:

import os
import glob

# 获取CSV目录下所有csv文件的路径列表
csv_files = glob.glob('./CSV/*.csv')

# 检查是否找到文件,避免索引越界
if csv_files:
    target_file = csv_files[0]
    file_size = os.path.getsize(target_file)
    print(f"当前CSV文件大小:{file_size} 字节")
else:
    print("提示:CSV目录下没有找到任何.csv文件")

如果担心后续目录可能出现多个CSV文件(比如忘记删除旧文件),可以加个额外判断:

if len(csv_files) > 1:
    print("警告:CSV目录下存在多个.csv文件,默认取第一个")

方案2:使用pathlib模块(Python 3.4+ 推荐写法)

pathlib是Python 3.4引入的面向对象的路径处理模块,写法更简洁直观:

from pathlib import Path

# 定位到CSV目录
csv_directory = Path('./CSV')

# 获取目录下第一个匹配的.csv文件,没有则返回None
target_file = next(csv_directory.glob('*.csv'), None)

if target_file:
    # 通过stat()方法获取文件属性,st_size就是文件大小(字节)
    file_size = target_file.stat().st_size
    print(f"当前CSV文件大小:{file_size} 字节")
else:
    print("提示:CSV目录下没有找到任何.csv文件")

两种方案都能帮你避开硬编码文件名的问题,而且能正确获取到文件大小~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:10:11