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

Python使用os.path.getsize筛选大体积PDF文件返回空列表问题

问题成因
  • 核心错误是混淆了两类运算符:你用了做二进制位运算的&(按位与)来组合布尔判断条件,但Python中组合多个“同时满足”的判断条件应该用逻辑运算符and。
    再加运算符优先级的影响:&的优先级比比较运算符>高,所以你写的判断条件实际执行顺序和预想的完全不一样,等价于先把isfile()返回的布尔值、endswith()返回的布尔值、getsize()返回的文件大小值三个数做按位与运算,再把运算结果和18000比较大小。
    布尔值在参与位运算时True等价于整数1、False等价于整数0,三个数按位与的结果只能是0或者1,永远不可能大于18000,因此所有文件都会被判定为不符合条件,最终返回空列表。
  • 额外代码隐患:你调用getsize()时直接用字符串相加拼接路径folder_location+f,如果目录路径末尾没有携带系统对应的路径分隔符(Windows下是\、类Unix系统下是/),会直接拼接出无效路径触发报错,之前能正常打印文件大小只是刚好传入的folder_location末尾带了分隔符,属于巧合,应该统一用已经导入的join()函数做安全的路径拼接。
修正方案

将条件判断里的&全部替换为and,同时修正getsize()的路径拼接逻辑,修正后的代码如下:

pdf_files = [
    f for f in listdir(folder_location)
    if isfile(join(folder_location, f))
    and f.lower().endswith(".pdf")
    and getsize(join(folder_location, f)) > 18000
]

补充说明:如果你说的18Ko是严格的18KiB,对应的字节数是18 * 1024 = 18432,可以把判断阈值从18000改成18432,筛选精度会更准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:21:34