python移动文件的函数_移动并重命名2000个文件,用Python,只需3秒
原标题:移动并重命名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秒相关推荐
- 移动并重命名2000个文件,Python,3秒
今天介绍的案例是如何利用Python来自动化移动.修改.重命名文件/夹,这样的操作在日常办公中经常会用到,若能掌握用Python实现将会大大提高效率! 所以我希望能够通过这篇文章来让大家了解:如何基于 ...
- 用python画函数的梯度图_只需45秒,用Python给故宫画一组雪景手绘图
原标题:只需45秒,用Python给故宫画一组雪景手绘图 导读:最近故宫总能"摊上事". 今天是元宵节,一批幸运鹅拿着在故宫门票预售网站瘫痪之前抢来的门票,夜游故宫,成为94年来第 ...
- python 画八角形步骤_只需45秒,Python给故宫画一组手绘图!
原标题:只需45秒,Python给故宫画一组手绘图! 作者 |丁彦军 来源 |恋习Python(ID:sldata2017) 13日早晨,当北京市民拉开窗帘时发现,窗外雪花纷纷扬扬在空中飘落,而且越下 ...
- 合并excel文件 C语言,再见Ctrl + C!合并100个Excel表格,只需30秒!
原标题:再见Ctrl + C!合并100个Excel表格,只需30秒! 哈喽,大家好!在上篇文章< 你复制粘贴的那么认真,难怪天天加班[Excel教程] >中,我们给大家介绍了4种拆分工作 ...
- excel其中一个页签慢_技巧 | 只需10秒,便可对Excel多页签进行快速有效汇总
在Excel中,多页签的数据汇总,是一个出镜频率极高的问题,有人用VBA,有人用函数,有人用最传统的方式--总之,就是八仙过海,各显神通-- 然而,模式虽多,但当Excel小白实操起来,大脑又是一片空 ...
- 批量创建100个文件夹,只需10秒~
前几天同事问我怎么批量创建文件夹,在这里通过一些操作给大家分享一下,只需10秒便可创建大量的文件夹 例如:我们以梁山108位好汉的名称为例,要求分别以每个人名创建一个文件夹,相当于需要创建108个文件 ...
- python查找文件并重命名_python复制文件并重命名
标签:多个 file 请求 重命名 XML 基本 path main 复制文件 def copy_files(path,newpath): #定义函数名称 old_na ...
- python中怎么调用函数_浅谈Python中函数的定义及其调用方法
一.函数的定义及其应用 所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用函数的使用包含两个步骤 1.定义函数–封装独立的功能 2.调用函数–享受封装的成果 函数的作用:在开发时 ...
- python log函数_求你别再花大价钱学 Python 之爬虫实战
引子 Python 基本概念 Python 优势和劣势 优势 Python 的劣势 Python 安装设置 Python 基本语法 程序例子 Python 基本语法 Python 爬虫实现 爬虫相关 ...
最新文章
- GROMACS运行参数整理(二)
- sudo 密码超时时间
- linux NFS配置:NFS相关概念及其配置与查看
- UART 和 USART 的区别 == 通用异步收发传输器 通用同步/异步串行接收/发送器
- 没写client,想先测试server端怎么办?
- 清华大学迎来外籍院长!
- 关于生活,可能有用的40条建议
- 服务器系统安装报价,服务器系统安装费用
- Spring Boot 日志配置 ——logback
- react 返回一个页面_react-router-dom 怎么让第二个页面返回到第一个页面使得第一个页面不重新加载...
- opencv 显示图片失败,全灰
- UI设计师需要熟记的45个快捷键Windows、Mac
- 转载:人生真相之为何你应该假装自己是一个电脑白痴(原文pconline)
- Cplex的安装和使用实例
- python 平方公里和英亩单位转换
- python ssologin_Python sso
- Rabbitmq安装以及入门
- Remove Double Negative(去除双重否定)
- java中feli删除操作_Feli的生日礼物
- 《软件方法(上)业务建模和需求》第2版 勘误(2021年10月21日更新)
热门文章
- 全国计算机考试考ms还是wps,计算机wps和ms哪个简单?计算机一级office考试技巧有什么?...
- SQL Server 查看被锁的表
- QMS系统客户端自动化测试流程图
- backports/lzma/_lzmamodule.c:115:18: fatal error: lzma.h: No such file or directory serWarning: Coul
- 中国科学技术大学计算机专业排名,2019中国科学技术大学专业排名
- 不爱说话?社交无能?或许你可以试试这种说话术
- 周易起名大师快速破解教程
- python描述性统计命令_描述性统计_Python数据分析实战应用_数据挖掘与分析视频-51CTO学院...
- 程序员理财的正确姿势
- 在cadence集成calibre