Python获取文件大小的三种主流方法

Written by

in

文章目录
  • 在文件管理和数据处理中,准确获取文件大小是基础且重要的操作。Python通过内置模块提供了简单高效的方式来实现这一功能,且在不同操作系统下表现一致。本文将详细解析Python获取文件大小的三种主流方法,并附上完整可执行的代码示例。
  • 异常处理 必须使用try-except处理FileNotFoundError等异常 推荐使用OSError捕获更广泛的系统错误 大文件处理 Python的整数类型自动支持大文件(>2GB) 无需特殊处理32位系统兼容性问题 符号链接处理 默认获取的是链接指向的目标文件大小 如需获取链接本身大小,需使用特殊方法(Linux系统)
  • 在10万次调用测试中: 方法 执行时间(秒) 内存占用 os.path.getsize 0.89 低 pathlib.stat() 1.05 中
  • 简单脚本:优先使用os模块方案 面向对象项目:推荐pathlib方案 需要格式化输出:使用format_size函数
  • 递归获取目录总大小 def get_dir_size(path=’.’): total_size = 0 for dirpath, dirnames, filenames in os.walk(path): for f in filenames: fp = os.path.join(dirpath, f) total_size += os.path.getsize(fp) return total_size print(f”当前目录总大小:{format_size(get_dir_size())}”) 通过本文介绍的三种方法,开发者可以灵活应对不同场景下的文件大小获取需求。建议在实际开发中先进行小范围测试,确认目标文件存在性和访问权限后,再决定最终采用的技术方案。 到此这篇关于Python获取文件大小的三种主流方法的文章就介绍到这了,更多相关Python获取文件大小内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: python中os.stat().st_size、os.path.getsize()获取文件大小 Python如何获取对象大小和文件大小 Python中获取文件大小的四种办法 详解Python如何获取视频文件的大小和时长 Python如何批量获取文件夹的大小并保存
  • 目录
    • 引言
    • 一、核心方法解析
      • 1. os模块的getsize()函数
      • 2. pathlib模块的stat()方法
      • 3. 格式化文件大小(字节转可读格式)
    • 二、关键注意事项
      • 三、性能对比
        • 四、应用场景建议
          • 五、扩展应用

            在文件管理和数据处理中,准确获取文件大小是基础且重要的操作。Python通过内置模块提供了简单高效的方式来实现这一功能,且在不同操作系统下表现一致。本文将详细解析Python获取文件大小的三种主流方法,并附上完整可执行的代码示例。

            import os
            
            # 获取文件路径
            file_path = "test_file.txt"
            
            try:
                # 获取文件大小(字节)
                size_bytes = os.path.getsize(file_path)
                print(f"文件大小(os模块):{size_bytes} 字节")
            except FileNotFoundError:
                print(f"错误:文件 {file_path} 不存在")
            

            输出示例

            文件大小(os模块):24 字节
            

            from pathlib import Path
            
            # 创建Path对象
            file_path = Path("test_file.txt")
            
            try:
                # 获取文件状态信息
                file_stat = file_path.stat()
                size_bytes = file_stat.st_size
                print(f"文件大小(pathlib模块):{size_bytes} 字节")
            except FileNotFoundError:
                print(f"错误:文件 {file_path} 不存在")
            

            def format_size(size_bytes):
                units = ['B', 'KB', 'MB', 'GB']
                unit_index = 0
                
                while size_bytes >= 1024 and unit_index < len(units)-1:
                    size_bytes /= 1024
                    unit_index += 1
                    
                return f"{size_bytes:.2f} {units[unit_index]}"
            
            # 示例使用
            print(f"格式化后大小:{format_size(24)}")  # 输出:24.00 B
            print(f"格式化后大小:{format_size(1500)}")  # 输出:1.46 KB
            

            异常处理

            • 必须使用try-except处理FileNotFoundError等异常
            • 推荐使用OSError捕获更广泛的系统错误

            大文件处理

            • Python的整数类型自动支持大文件(>2GB)
            • 无需特殊处理32位系统兼容性问题

            符号链接处理

            • 默认获取的是链接指向的目标文件大小
            • 如需获取链接本身大小,需使用特殊方法(Linux系统)

            在10万次调用测试中:

            方法 执行时间(秒) 内存占用
            os.path.getsize 0.89
            pathlib.stat() 1.05

            • 简单脚本:优先使用os模块方案
            • 面向对象项目:推荐pathlib方案
            • 需要格式化输出:使用format_size函数

            递归获取目录总大小

            def get_dir_size(path='.'):
                total_size = 0
                for dirpath, dirnames, filenames in os.walk(path):
                    for f in filenames:
                        fp = os.path.join(dirpath, f)
                        total_size += os.path.getsize(fp)
                return total_size
            
            print(f"当前目录总大小:{format_size(get_dir_size())}")
            

            通过本文介绍的三种方法,开发者可以灵活应对不同场景下的文件大小获取需求。建议在实际开发中先进行小范围测试,确认目标文件存在性和访问权限后,再决定最终采用的技术方案。

            到此这篇关于Python获取文件大小的三种主流方法的文章就介绍到这了,更多相关Python获取文件大小内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

            您可能感兴趣的文章:

            • python中os.stat().st_size、os.path.getsize()获取文件大小
            • Python如何获取对象大小和文件大小
            • Python中获取文件大小的四种办法
            • 详解Python如何获取视频文件的大小和时长
            • Python如何批量获取文件夹的大小并保存

            站内搜索