广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python 批量重命名移动文件
  • 421
分享到

python 批量重命名移动文件

2024-04-02 19:04:59 421人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、需求描述二、前置知识和数据准备2.1 生成大量随机文件2.2 重命名文件/文件夹2.3 移动文件/文件夹2.4 遍历获取文件三、代码实现今天介绍的案例是如何利用python来

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

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

一、需求描述

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

需要完成的内容如下

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

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

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

二、前置知识和数据准备

2.1 生成大量随机文件

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

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

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


import random
import string

for i in range(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 结构,减少出错的几率


import random
import string

for i in range(2000):
  random_str = ''.join(random.sample(string.ascii_letters + string.digits, random.randint(1, 11)))
  with open(r"C:\\xxx\\file1" + random_str + ".txt", 'w+') as file:
    file.write(''.join(random.sample(string.ascii_letters + string.digits, random.randint(1, 11))))

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

2.2 重命名文件/文件夹

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


import os
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 库的迭代框架


import glob
path = xxx

for file in glob.glob(f'{path}*.xlsx', recursive=True): 
  pass

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

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


import glob
path = xxx

for file in glob.glob(f'{path}/*.txt'): 
  pass

三、代码实现

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


import os
import shutil
import glob

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

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

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


if not os.path.exists(path + r'\file2'): 
  os.mkdir(path + r'\file2')

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


count = 1 # 生成序号
for file in glob.glob(f'{path}\\测试\\*.txt'):
  # 这里是文件绝对路径,可以用字符串方法直接替换修改,但为了方便理解我还是用路径拼接
  filename = os.path.basename(file)
  shutil.move(file, path + r'\file2' + f'\{count}-终稿-{filename}')
  count += 1

以上就是python 批量重命名移动多个文件的详细内容,更多关于python 批量重命名移动文件的资料请关注编程网其它相关文章!

--结束END--

本文标题: python 批量重命名移动文件

本文链接: https://www.lsjlt.com/news/121959.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python 批量重命名移动文件
    目录一、需求描述二、前置知识和数据准备2.1 生成大量随机文件2.2 重命名文件/文件夹2.3 移动文件/文件夹2.4 遍历获取文件三、代码实现今天介绍的案例是如何利用Python来...
    99+
    2022-11-11
  • python怎么批量重命名文件
    你可以使用os模块来批量重命名文件。以下是一个示例代码,可以把文件夹下的所有文件名中的指定字符串替换为新的字符串:pythonimp...
    99+
    2023-10-18
    python
  • python实现批量重命名文件
    #!/usr/bin/env python # -*- coding:UTF-8 -*- import os # 第一种方法 files = os.listdir('.') i = 1 for f in files:     filenam...
    99+
    2023-01-31
    批量 重命名 文件
  • python实现文件批量重命名
    本文实例为大家分享了python实现文件批量重命名,供大家参考,具体内容如下 讲解 1、库:os 2、代码效果:对指定文件夹内所有文件重命名为1,2,3… 3、代码原理:使用os.l...
    99+
    2022-11-12
  • Java实现文件批量重命名,移动和删除
    目录一、题目描述-批量重命名1、题目2、解题思路3、代码详解二、题目描述-批量移动文件1、题目2、解题思路3、代码详解4、多学一个知识点三、题目描述-批量删除tmp文件1、题目2、解...
    99+
    2022-11-13
    Java文件重命名 Java文件 移动 Java文件 删除
  • python3批量为文件重命名
    简介 为什么使用python批量重命名而没有使用shell,python对文字的处理更灵活,对于文件名中的空格不会出现报错。 代码: #!/usr/bin/env python # -*- coding:utf-8 -*- """ @aut...
    99+
    2023-01-31
    批量 重命名 文件
  • win7怎么批量重命名文件
    这篇文章主要介绍了win7怎么批量重命名文件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇win7怎么批量重命名文件文章都会有所收获,下面我们一起来看看吧。鼠标点击打开存放系列文件的文件夹,左键点击要排列的第一...
    99+
    2023-06-28
  • shell如何批量重命名文件
    这篇文章将为大家详细讲解有关shell如何批量重命名文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。批量重命名文件为所有txt文件加上.bak 后缀:rename&nb...
    99+
    2022-10-19
  • Win10如何批量重命名文件
    小编给大家分享一下Win10如何批量重命名文件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体步骤如下:全选你想重命名的文件,如下图在选中状态的一个文件上点右键,选择重命名,如下图一个文件改好新名称后,其他文件依次被序号...
    99+
    2023-06-14
  • Linux怎么批量重命名文件
    本文小编为大家详细介绍“Linux怎么批量重命名文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux怎么批量重命名文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。通过rename命令批量重命名文件基本...
    99+
    2023-06-28
  • python文件名批量重命名脚本实例代码
    python文件名批量重命名脚本 #encoding=utf-8 import cv2 import os import shutil base_dir = r'文件所在的文件...
    99+
    2022-11-12
  • Win10怎么批量重命名文件? win10文件夹重命名的教程
    大家在用电脑时,经常会遇到需要批量重命名文件的问题。如果文件不多还好办,不然挨个重命名是很麻烦的事。所以,掌握重命名小技巧还是非常有必要的。下面我们就向大家介绍一下这个简单实用的方法,适用于Win7/Win8.1/Win...
    99+
    2023-05-20
    Win10 重命名
  • node中怎么批量重命名文件
    这篇文章给大家介绍node中怎么批量重命名文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。实现思路整理了一下思路很简单,就是先把原文件的文件名读取出来放入一个数组,再把新名字作为一个...
    99+
    2022-10-19
  • Linux下如何批量重命名文件
    这篇文章给大家分享的是有关Linux下如何批量重命名文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在 Linux 中,我们对文件进行重命名一般都会使用到 mv 命令,这在对单个文件重命名时非常方便。但是,若我...
    99+
    2023-06-27
  • Linux中批量移动、复制、追加和重命名文件的方法
    这篇文章主要介绍了Linux中批量移动、复制、追加和重命名文件的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux中批量移动、复制、追加和重命名文件的方法文章都会有所收获,下面我们一起来看看吧。在 L...
    99+
    2023-06-27
  • bat和python批量重命名文件的实现代码
    最近从某网站下载了一批文档,但是文件是用数字串命名的文档(很多图书馆都这样吧),现在我也下载完了这些文件,也有这些文件的列表,就是不能一个一个的把文件给重命名吧所以从网上找了这几个脚本。 一、使用bat脚本...
    99+
    2022-06-04
    批量 重命名 代码
  • linux如何快速批量重命名文件
    这篇文章将为大家详细讲解有关linux如何快速批量重命名文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. rename命令顾名思义,rename命令就是用来进行重命名文件名的。rename命令有非常...
    99+
    2023-06-15
  • 怎么在VBS中批量重命名文件
    这篇文章给大家介绍怎么在VBS中批量重命名文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。核心函数'选择我的电脑作为根目录,来选择目录Const MY_COMPUTER = &a...
    99+
    2023-06-08
  • win10如何批量重命名文件后缀
    win10如何批量重命名文件后缀?现在有非常多的用户都在使用Win10系统,而我们在平时使用电脑的过程中,经常会用到很多的快捷键,因为快捷键能让我们的操作更方便,那么要怎么批量重命名文件?下面,小编就为大家介绍下Win10批量重命名文件的操...
    99+
    2023-07-10
  • mv命令——移动或重命名文件
    mv命令是英文单词move的缩写,作用是移动文件,或者重命名文件. 这里需要先搞清楚mv操作中移动和重命名的概念: 移动文件:就是将文件从一个目录移动到另一个目录,相当于Windows中的剪切操作重命名文件:在同一个目录中移动文件就可以理解...
    99+
    2023-10-04
    linux 运维 服务器 bash euler
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作