📌  相关文章
📜  国际空间研究组织 | ISRO CS 2009 |问题 44(1)

📅  最后修改于: 2023-12-03 15:37:14.323000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2009 |问题 44

这是印度国家航天局(ISRO)于2009年的一次招聘考试中的一道题目。

题目描述

有一个名称为dir的文件夹,其中包含若干文件和子文件夹。现在,你需要编写一个程序,在给定的目录中,递归地寻找所有文件及其大小,并将它们的名称和大小输出。

输入格式

无需输入。可在程序中定义目录名称。

输出格式

输出所有文件的名称以及它们的大小(以字节为单位)。按照以下格式输出:

Filename: file1.txt
Size: 20 bytes

Filename: file2.txt
Size: 35 bytes

...

Total files: XX
Total Size: XX bytes
解题思路

为了打印出文件夹中所有文件的名称和大小,我们需要使用一个递归函数来遍历整个目录,以查找它们。我们可以使用Python内置的os模块来实现这个目的。

首先,我们需要导入os模块,并定义一个函数 list_files() 来递归地列出文件和子文件夹。

import os

def list_files(startpath):
    pass

接下来,我们需要定义一个变量,用于跟踪总文件数和总大小:

total_files = 0
total_size = 0

接着,我们使用Python内置的os.walk()函数来遍历目录,并获取每个文件的名称和大小。对于每个文件,我们都打印其名称和大小,然后将它们的大小加入总大小中。

for root, dirs, files in os.walk(startpath):
    for filename in files:
        filepath = os.path.join(root, filename)
        filesize = os.path.getsize(filepath)
        print(f"Filename: {filename}")
        print(f"Size: {filesize} bytes\n")
        total_files += 1
        total_size += filesize

最后,我们输出总文件数和总大小:

print(f"Total files: {total_files}")
print(f"Total Size: {total_size} bytes")
完整代码
import os

def list_files(startpath):
    total_files = 0
    total_size = 0
    for root, dirs, files in os.walk(startpath):
        for filename in files:
            filepath = os.path.join(root, filename)
            filesize = os.path.getsize(filepath)
            print(f"Filename: {filename}")
            print(f"Size: {filesize} bytes\n")
            total_files += 1
            total_size += filesize
    print(f"Total files: {total_files}")
    print(f"Total Size: {total_size} bytes")

list_files('dir')
总结

以上就是本题目解决的完整步骤和代码示例。本项目也展现了遍历文件及目录的方法或要点。