📅  最后修改于: 2023-12-03 15:37:14.323000             🧑  作者: Mango
这是印度国家航天局(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')
以上就是本题目解决的完整步骤和代码示例。本项目也展现了遍历文件及目录的方法或要点。