使用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
相关产品推荐
相关产品推荐

