概述
I/O操作不仅包括屏幕输入输出,还包括文件的读取与写入,Python提供了很多必要的方法和功能,进行文件及文件夹的相关操作。本文主要通过两个简单的小例子,简述Python在文件夹及文件的应用,仅供学习分享使用,如有不足之处,还请指正。
涉及知识点
os模块:os 模块提供了非常丰富的方法用来处理文件和目录。
open方法:open方法用于打开一个文件,用于读取和写入。
实例1:获取指定目录下所有的文件大小,并找出最大文件及最小文件
分解步骤:
遍历文件夹下所有的子文件及子文件夹(需要递归),并计算每一个文件的大小
计算所有文件的大小总和
找出最大文件及最小文件
核心代码
定义一个方法get_file_size,获取单个文件的大小,单位有KB和MB两种。关键点如下所示:
- os.path.getsize 用于获取指定文件的大小,单位是Byte。
- round为四舍五入函数,保留指定位数的小数。
def get_file_size(file_path, KB=False, MB=False): """获取文件大小""" size = os.path.getsize(file_path) if KB: size = round(size / 1024, 2) elif MB: size = round(size / 1024 * 1024, 2) else: size = size return size
定义一个方法list_files,遍历指定文件目录,并存入字典当中。关键点如下所示:
- os.path.isfile 用于判断给定的路径是文件还是文件夹。
- os.listdir 用于获取指定目录下所有的文件及文件夹,返回一个列表,但是只是当前文件夹的名称,并不是全路径。
- os.path.join 用于拼接两个路径
def list_files(root_dir): """遍历文件""" if os.path.isfile(root_dir): # 如果是文件 size = get_file_size(root_dir, KB=True) file_dict[root_dir] = size else: # 如果是文件夹,则遍历 for f in os.listdir(root_dir): # 拼接路径 file_path = os.path.j<div>本文来源gaodai.ma#com搞#代!码网_</div>oin(root_dir, f) if os.path.isfile(file_path): # 如果是一个文件 size = get_file_size(file_path, KB=True) file_dict[file_path] = size else: list_files(file_path)
计算总大小和最大文件及最小文件,如下所示:
通过比较字典value的大小,返回对应的key的名称。关键点如下所示:
- max_file = max(file_dict, key=lambda x: file_dict[x])
- min_file = min(file_dict, key=lambda x: file_dict[x])
if __name__ == '__main__': list_files(root_dir) # print( len(file_dict)) # 计算文件目录大小 total_size = 0 # 遍历字典的key for file in file_dict: total_size += file_dict[file] print('total size is : %.2f' % total_size) # 找最大最小文件 max_file = max(file_dict, key=lambda x: file_dict[x]) min_file = min(file_dict, key=lambda x: file_dict[x]) print('max file is : ', max_file, '\n file size is :', file_dict[max_file]) print('min file is : ', min_file, '\n file size is :', file_dict[min_file])
实例2:将两个文本文件中的内容进行合并,并保存到文件中
两个文件内容,如下图所示: