原标题:移动并重命名2000个文件,用Python,只需3秒

作者:陈熹、刘早起

来源:早起Python

今天介绍的案例是如何利用Python来 自动化移动、修改、重命名文件/夹,这样的操作在日常办公中经常会用到,若能掌握用Python实现将会 大大提高效率!

所以我希望能够通过这篇文章来让大家了解:如何基于 os glob 和 shutil 对 文件管理的综合运用!

一、需求描述

为了让本文介绍的案例更有通用型,我新建了一个文件夹 files1 存放着 1800+个文件,如下所示:

需要完成的内容如下

将 1835个文件移动到新文件夹 file2 ,并且重命名文件,名字开头加上 序号 和 “终稿” 两个字,如名字更改为 “ 1-终稿-xxxxx(原文件名) ”

你心里可能想着: 这是人做的事???但确实这是真实的需求,文件批量重命名非常常见,如果没有一些技巧,那么只能耗费大量的时间和人力去做。 这里的技巧,就是 Python

另外还有一个问题: 要先移动再重命名还是先重命名再移动呢?继续往下看!

二、前置知识和数据准备 2.1 生成大量随机文件

真实的办公场景并不会这样的需求,毕竟谁想要无端给自己的电脑产生大量无用文件呢(也不要给别人的电脑乱用)

不得不提,生成随机文件能够帮助我们更好的测试自己 Python 文件管理的技能。 如果你没有合适的文件夹和文件夹供自己练习,那么为什么不自己写个代码产生呢?

当然,在这个过程中我们也会学习一些知识点,先看代码:

importrandom

importstring

fori inrange( 2000):

random_str = ''.join(random.sample(string.ascii_letters + string.digits, random.randint( 1, 11)))

file = open( r"C:\\xxx\\file1"+ random_str + ".txt", 'w+') # 前面路径是产生文件的目标文件夹

file.write( ''.join(random.sample(string.ascii_letters + string.digits, random.randint( 1, 11))))

file.close

通过 string 就可以获得所有的字母和数字,利用 random.sample 常规接受两个参数,一个是抽样的范围,一个是抽样的次数,默认是放回抽样。这样就可以在给定的字母数字范围内随机抽取 1-10 个,但是返回的结果注意是列表,需要再用 .join 方法完成字符串拼接

用随机产生的名字生成文件后,再在其内部用类似的方法随机写入一些内容:

上面的写法不够优雅,因为需要配套使用 file.close 释放,更好的方法是直接利用上下文管理器 with 结构,减少出错的几率

importrandom

importstring

fori inrange( 2000):

random_str = ''.join(random.sample(string.ascii_letters + string.digits, random.randint( 1, 11)))

withopen( r"C:\\xxx\\file1"+ random_str + ".txt", 'w+') asfile:

file.write( ''.join(random.sample(string.ascii_letters + string.digits, random.randint( 1, 11))))

因为即使是随机产生名字,但抽样的范围和次数不大决定了 2000 次抽样会有一些抽签组合成的名字完全一样,后面形成的文件会覆盖之前产生的文件,最终导致产生的文件没有 2000 个。

2.2 重命名文件/文件夹

需要用到内置库 os 的 os.rename 方法

importos

os.rename( 'practice.txt', 'practice_rename.txt') # 重命名文件

os.rename( '文件夹1', '文件夹2') # 重命名文件夹

虽然需求中有重命名文件的需求,但实际上并不需要直接借助这个方法

2.3 移动文件/文件夹

需要用到内置库 shutil 的 shutil.move 方法

import shutil

shutil.move(r '.\practice.txt', r '.\文件夹1/')

shutil.move(r '.\practice.txt', r '.\文件夹1/new.txt')

注意到上面后两行代码的区别吗?前一行是将目标文件移动到目标文件夹里,而后一行,在将目标文件移动到目标文件夹里的同时,能够对其进行重命名

也就是说,我们并不需要用 os.rename 先命名文件再用 shutil.move 将其移动的指定文件夹,而是可以用 shutil.move 一步到位。

2.4 遍历获取文件

采用基于 glob 库的迭代框架:

importglob

path = xxx

forfile inglob.glob( f' {path}/**/*.xlsx', recursive= True):

pass

上面的代码能够获取给定路径内部所有文件夹下的 Excel 文件( .xlsx 格式), recursive 参数默认为 False ,当为 True 时允许逐级遍历

而本例需要获取给定文件夹下的所有 .txt 文件,则更加简单:

import glob

path = xxx

forfile inglob.glob(f '{path}/*.txt'):

pass

三、代码实现

在上面一节我们已经把 需求拆分为多个小块并理清了思路,现在可以开始写代码了。首先导入需要的库

importos

importshutil

importglob

path = r"C:\xxx"# 存放大量需更名移动文件的文件夹路径的上一级路径

上文提到,不需要利用 os.rename 那为什么要导入 os 库呢?

一方面因为要通过这个库产生新的文件夹。也可以手动完成,但交给代码多了判断也不容易出错:

ifnotos.path.exists(path + r'\file2'):

os.mkdir(path + r'\file2')

另一方面下文还会用它获取文件名,然后就可以 移动更名一步到位, glob 迭代文件框架遍历获取文件绝对路径:

count = 1# 生成序号

forfile inglob.glob( f' {path}\\测试\\*.txt'):

# 这里是文件绝对路径,可以用字符串方法直接替换修改,但为了方便理解我还是用路径拼接

filename = os.path.basename(file)

shutil.move(file, path + r'\file2'+ f'\{count}-终稿- {filename}')

count += 1

看到没, Python、3秒、搞定、干饭!

责任编辑:

python移动文件的函数_移动并重命名2000个文件,用Python,只需3秒相关推荐

  1. 移动并重命名2000个文件,Python,3秒

    今天介绍的案例是如何利用Python来自动化移动.修改.重命名文件/夹,这样的操作在日常办公中经常会用到,若能掌握用Python实现将会大大提高效率! 所以我希望能够通过这篇文章来让大家了解:如何基于 ...

  2. 用python画函数的梯度图_只需45秒,用Python给故宫画一组雪景手绘图

    原标题:只需45秒,用Python给故宫画一组雪景手绘图 导读:最近故宫总能"摊上事". 今天是元宵节,一批幸运鹅拿着在故宫门票预售网站瘫痪之前抢来的门票,夜游故宫,成为94年来第 ...

  3. python 画八角形步骤_只需45秒,Python给故宫画一组手绘图!

    原标题:只需45秒,Python给故宫画一组手绘图! 作者 |丁彦军 来源 |恋习Python(ID:sldata2017) 13日早晨,当北京市民拉开窗帘时发现,窗外雪花纷纷扬扬在空中飘落,而且越下 ...

  4. 合并excel文件 C语言,再见Ctrl + C!合并100个Excel表格,只需30秒!

    原标题:再见Ctrl + C!合并100个Excel表格,只需30秒! 哈喽,大家好!在上篇文章< 你复制粘贴的那么认真,难怪天天加班[Excel教程] >中,我们给大家介绍了4种拆分工作 ...

  5. excel其中一个页签慢_技巧 | 只需10秒,便可对Excel多页签进行快速有效汇总

    在Excel中,多页签的数据汇总,是一个出镜频率极高的问题,有人用VBA,有人用函数,有人用最传统的方式--总之,就是八仙过海,各显神通-- 然而,模式虽多,但当Excel小白实操起来,大脑又是一片空 ...

  6. 批量创建100个文件夹,只需10秒~

    前几天同事问我怎么批量创建文件夹,在这里通过一些操作给大家分享一下,只需10秒便可创建大量的文件夹 例如:我们以梁山108位好汉的名称为例,要求分别以每个人名创建一个文件夹,相当于需要创建108个文件 ...

  7. python查找文件并重命名_python复制文件并重命名

    标签:多个   file   请求   重命名   XML   基本   path   main   复制文件 def copy_files(path,newpath): #定义函数名称 old_na ...

  8. python中怎么调用函数_浅谈Python中函数的定义及其调用方法

    一.函数的定义及其应用 所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用函数的使用包含两个步骤 1.定义函数–封装独立的功能 2.调用函数–享受封装的成果 函数的作用:在开发时 ...

  9. python log函数_求你别再花大价钱学 Python 之爬虫实战

    引子 Python 基本概念 Python 优势和劣势 优势 Python 的劣势 Python 安装设置 Python 基本语法 程序例子 Python 基本语法 Python 爬虫实现 爬虫相关 ...

最新文章

  1. GROMACS运行参数整理(二)
  2. sudo 密码超时时间
  3. linux NFS配置:NFS相关概念及其配置与查看
  4. UART 和 USART 的区别 == 通用异步收发传输器 通用同步/异步串行接收/发送器
  5. 没写client,想先测试server端怎么办?
  6. 清华大学迎来外籍院长!
  7. 关于生活,可能有用的40条建议
  8. 服务器系统安装报价,服务器系统安装费用
  9. Spring Boot 日志配置 ——logback
  10. react 返回一个页面_react-router-dom 怎么让第二个页面返回到第一个页面使得第一个页面不重新加载...
  11. opencv 显示图片失败,全灰
  12. UI设计师需要熟记的45个快捷键Windows、Mac
  13. 转载:人生真相之为何你应该假装自己是一个电脑白痴(原文pconline)
  14. Cplex的安装和使用实例
  15. python 平方公里和英亩单位转换
  16. python ssologin_Python sso
  17. Rabbitmq安装以及入门
  18. Remove Double Negative(去除双重否定)
  19. java中feli删除操作_Feli的生日礼物
  20. 《软件方法(上)业务建模和需求》第2版 勘误(2021年10月21日更新)

热门文章

  1. 全国计算机考试考ms还是wps,计算机wps和ms哪个简单?计算机一级office考试技巧有什么?...
  2. SQL Server 查看被锁的表
  3. QMS系统客户端自动化测试流程图
  4. backports/lzma/_lzmamodule.c:115:18: fatal error: lzma.h: No such file or directory serWarning: Coul
  5. 中国科学技术大学计算机专业排名,2019中国科学技术大学专业排名
  6. 不爱说话?社交无能?或许你可以试试这种说话术
  7. 周易起名大师快速破解教程
  8. python描述性统计命令_描述性统计_Python数据分析实战应用_数据挖掘与分析视频-51CTO学院...
  9. 程序员理财的正确姿势
  10. 在cadence集成calibre