前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速整理文件——使用Python遍历文件

快速整理文件——使用Python遍历文件

作者头像
一只大鸽子
发布2022-12-06 14:41:31
9710
发布2022-12-06 14:41:31
举报

案例

鸽子忘记自己的mp3文件存储在哪些地方了,想将它们都找出来并整理。 利用os.walk方法遍历目录(D盘),然后将它们都保存到一个文件夹下:

代码语言:javascript
复制
import os 
import shutil
import pathlib
from tqdm import tqdm

search_path = "D:/" # 查找D盘 
store_path = "D:/音乐"

#如果sotre_path不存在则创建目录。
pathlib.Path(store_path).mkdir(parents=True, exist_ok=True) 

for dirpath, dirnames, filenames in tqdm(os.walk(search_path)):
    if dirpath == store_path:
        print(f"跳过{store_path}")
        continue
    for filename in filenames:
        if filename.endswith(".mp3"):
            f = os.path.join(dirpath, filename)
            file_size = os.path.getsize(f)
            if file_size > 2**20: # 文件大小超过1MB(2**20B)
                print(f, file_size)
                dst = os.path.join(store_path,filename)
                shutil.copyfile(f, dst) # 复制到目标文件夹下

注:tqdm用来显示进度,如果没有安装tqdm,可以先安装tqdm: python -m pip install tqdm

下面简单介绍一下用到的库:

os 库

标准库,提供与操作系统相关的功能。例如 文件名、环境变量、进程相关操作。

https://docs.python.org/zh-cn/3/library/os.html

通常很少使用os库,就像文档开头说的:如果你只是想读写一个文件,请参阅 open();如果你想操作文件路径,请参阅 os.path 模块;如果你想读取通过命令行给出的所有文件中的所有行,请参阅 fileinput 模块。为了创建临时文件和目录,请参阅 tempfile 模块;对于高级文件和目录处理,请参阅 shutil 模块。

os.walk

这里介绍一下 os.walk

os.walk(top, topdown=True, onerror=None, followlinks=False)

https://docs.python.org/zh-cn/3/library/os.html#os.walk 官方文档说得比较繁琐,可以直接看下面的例子:

例子

代码语言:javascript
复制
import os

search_path = r'D:\资料'
for dirpath, dirnames, filenames in os.walk(search_path):
    print(f"dirpath={dirpath}, dirnames={dirnames}, filenames={filenames}")

目录如下:

运行代码输出:

代码语言:javascript
复制
dirpath=D:\资料, dirnames=['电子书', '表格'], filenames=['资料说明.txt']
dirpath=D:\资料\电子书, dirnames=['精选电子书'], filenames=['a.txt', 'b.txt']
dirpath=D:\资料\电子书\精选电子书, dirnames=[], filenames=['精品.txt']
dirpath=D:\资料\表格, dirnames=[], filenames=['表格1.xlsx', '表格2.xlsx']

os.walk 是递归地向下遍历(深度优先遍历),访问所有的文件夹。每次遍历返回一个三元组dirpath, dirnames, filenamesdirpath是当前访问的路径, dirnames是路径下的文件夹(列表), filename是路径下的文件(列表)。

在本例中,访问的路径依次是:

-->资料 -->资料->电子书 -->资料->电子书->精选电子书 -->资料->表格

shutil库

标准库,与文件操作相关。 https://docs.python.org/zh-cn/3/library/shutil.html

shutil.copyfile(src, dst, *, follow_symlinks=True) 将名为 src 的文件的内容(不包括元数据(元数据是文件大小、修改时间等信息))拷贝到名为 dst 的文件并以尽可能高效的方式返回 dstsrcdst 均为路径类对象或以字符串形式给出的路径名。

如果要拷贝目录,可能要用到copytreeshutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False, dirs_exist_ok=False) 将以 src 为根起点的整个目录树拷贝到名为 dst 的目录并返回目标目录。 dirs_exist_ok 表示是否允许 dst 已存在或父目录缺失。

shutil.move(src, dst, copy_function=copy2) 递归地将一个文件或目录 (src) 移至另一位置 (dst) 并返回目标位置。

小结

使用os.walk可以遍历文件夹,结合其它的一些库(shutil),可以很方便地操作文件。如果需要对文件内容进行判断,还可以进一步处理。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一只大鸽子 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 案例
  • 注:tqdm用来显示进度,如果没有安装tqdm,可以先安装tqdm: python -m pip install tqdm
  • os 库
    • os.walk
      • 例子
      • shutil库
      相关产品与服务
      文件存储
      文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档