编写一个程序,要求用户输入一个文件夹路径,程序需要递归地遍历该文件夹下的所有文件和子文件夹,并将所有文件的大小求和。python源代码
时间: 2023-06-20 10:04:50 浏览: 53
以下是Python的源代码实现:
```python
import os
def get_folder_size(folder_path):
# 初始化文件大小总和为0
total_size = 0
# 遍历文件夹下的所有文件和子文件夹
for dirpath, dirnames, filenames in os.walk(folder_path):
# 计算当前文件夹下所有文件的总大小
for f in filenames:
fp = os.path.join(dirpath, f)
total_size += os.path.getsize(fp)
# 将文件大小转换为可读性更好的格式
total_size = convert_size(total_size)
return total_size
def convert_size(size_bytes):
# 转换文件大小为可读性更好的格式
if size_bytes == 0:
return "0B"
size_name = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB")
i = int(math.floor(math.log(size_bytes, 1024)))
p = math.pow(1024, i)
s = round(size_bytes / p, 2)
return "%s %s" % (s, size_name[i])
# 获取用户输入的文件夹路径
folder_path = input("请输入文件夹路径:")
# 调用函数计算文件夹下所有文件的大小总和
total_size = get_folder_size(folder_path)
# 输出文件大小总和
print("文件夹下所有文件的大小总和为:", total_size)
```
用户只需输入文件夹路径,程序将自动遍历该文件夹下的所有文件和子文件夹,并计算所有文件的大小总和。注意,此程序中使用了递归函数 `os.walk()` 来遍历文件夹下所有文件和子文件夹。同时,使用 `os.path.getsize()` 函数来获取每个文件的大小。最后,使用 `convert_size()` 函数将文件大小转换为可读性更好的格式,例如,将字节转换为更易读的千兆字节(MB)或吉比字节(GB)。