Python自动整理文件实战:遍历、移动与属性提取
本文详细介绍如何使用Python自动整理杂乱文件。通过os.listdir和os.walk遍历指定目录,利用os.renames或文件读写实现文件移动与复制。示例涵盖按后缀分类整理、重命名及获取文件属性(如大小、时间),帮助高效管理本地数据。
一、前言
日常生活中,文件往往杂乱无章,手动整理耗时费力。当文件数量庞大时,这种麻烦尤为突出。为此,本文将演示如何利用Python编写脚本,实现文件的自动整理,从而提升工作效率。
二、遍历文件
实现文件整理的第一步是遍历目标目录。Python提供了两种常用的遍历方式:一是直接获取指定目录下的所有文件和文件夹列表;二是递归获取指定目录及其所有子目录下的文件、文件夹。
我们首先查看第一种方法的代码实现:
import os
basedir = "test1"
file_list = [os.path.join(basedir, i) for i in os.listdir(basedir)]
print(file_list)
运行上述代码,输出效果如下:
['test1\\a1.jpeg', 'test1\\a2.jpeg', 'test1\\a3.jpeg']
接下来介绍第二种遍历方法:
import os
basedir = r"D:\\"
for root, dirs, files in os.walk(basedir):
for file in files:
path = os.path.join(root, file)
print(path)
此处演示遍历D盘根目录下的所有文件,部分输出结果如下:
EM.rst.txt D:\\CodeFile\cmake-3.15.0-rc1-win64-x64\doc\cmake\html\_sources\variable\CMAKE_HOST_SYSTEM_NAME.rst.txt D:\\CodeFile\cmake-3.15.0-rc1-win64-x64\doc\cmake\html\_sources\variable\CMAKE_HOST_SYSTEM_PROCESSOR.rst.txt D:\\CodeFile\cmake-3.15.0-rc1-win64-x64\doc\cmake\html\_sources\variable\CMAKE_HOST_SYSTEM_VERSION.rst.txt
通过上述两种方法,我们成功完成了对文件目录的遍历操作。
三、移动文件
移动文件的操作相对简单,只需调用os.renames函数即可。具体使用方式如下:
import os
os.renames(".\\test\\1.jpg", "1.jpg")
上述代码的作用是将当前目录下的test目录中的1.jpg图片移动到当前目录根路径。此外,我们也可以使用绝对路径来执行移动操作:
import os
os.renames(r"D:\test1\a2.jpeg", r"D:\a1.jpeg")
通过这种方式,我们实现了文件的移动功能。而文件整理的核心逻辑,正是基于特定规则对文件进行移动操作。
四、自动整理文件
图片整理的策略多种多样,不同用户的具体需求也不尽相同。因此,下文仅列举几种常见的整理场景及实现思路。
1、将图片集中存放
有时我们需要将所有图片集中存放于某一目录,或者根据特定命名规则(如QQ图片通常以IMG_开头)将指定图片归类到指定目录。利用本文介绍的技术,可以轻松完成此类整理任务。
import os
todir = "D:\imgs"
basedir = r"D:\\"
# 如果目录不存在,则创建
if not os.path.exists(todir):
os.mkdir(todir)
img_name = 1000
for root, dirs, files in os.walk(basedir):
for file in files:
path = os.path.join(root, file)
if path.endswith(".jpg"):
# 移动文件
os.renames(path, "D:\\imgs\\" + str(img_name) + ".jpg")
img_name += 1
上述代码实现了将所有jpg文件整理到指定目录的功能。然而,直接移动文件可能存在误操作风险,因此我们可以选择复制文件而非移动,以确保源文件安全:
import os
todir = "D:\\imgs"
basedir = r"D:\\"
# 如果目录不存在,则创建
if not os.path.exists(todir):
os.mkdir(todir)
img_name = 1000
for root, dirs, files in os.walk(basedir):
for file in files:
path = os.path.join(root, file)
if path.endswith(".jpg"):
# 移动文件
with open(path, "rb") as f1:
with open("D:\\imgs\\" + str(img_name) + ".jpg", "wb") as f2:
content = f1.read()
f2.write(content)
img_name += 1
通过上述代码,我们实现了文件的复制操作。
2、同步整理文件
我们还可以执行其他类型的整理工作,只需在遍历过程中添加相应的条件判断即可:
import os
todir = "D:\\imgs"
basedir = r"D:\\"
# 如果目录不存在,则创建
if not os.path.exists(todir):
os.mkdir(todir)
img_name = 1000
for root, dirs, files in os.walk(basedir):
for file in files:
path = os.path.join(root, file)
if path.endswith(".jpg"):
# 整理图片
elif path.endswith(".txt"):
# 整理文本
else:
pass
这样,我们就可以根据自定义规则灵活地整理文件。
3、获取文件属性
除了整理操作,获取文件属性也是管理文件的重要手段。相关代码如下:
import os
stat = os.stat("test1/a3.jpeg")
print(stat)
通过上述代码,我们可以查看文件的详细属性,输出内容示例如下:
os.stat_result(st_mode=33206, st_ino=281474977264692, st_dev=275139486, st_nlink=1, st_uid=0, st_gid=0, st_size=95289, st_atime=1632752119, st_mtime=1586520880, st_ctime=1632664508)
该结果包含了文件模式、文件大小、创建时间、修改时间等信息。获取这些属性后,我们可以更精准地整理文件。例如,筛选出最近一天内修改过的文件,从而快速定位所需内容。
到此这篇关于Python实现自动整理文件的示例代码的文章就介绍到这了,更多相关Python自动整理文件内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









