一、准备工作

为了用于实验,我们使用代码生成 200 个 txt 文件,代码如下。

for i in range(0, 200):file_name = f'file_{i}.txt'f = open(f'./file/{file_name}', mode='w')f.close()

运行结果:

二、制作 excel 的文件清单

1、思路

获取文件名,并将序号和文件名写入 excel。

2、openpyxl 安装

本文使用 openpyxl 库进行 excel 操作,使用 pip 进行安装。

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openpyxl

3、代码

from openpyxl import load_workbook
import os# 获取file路径所有txt文件
def find_txt(path):filenames = []filename_listdir = os.listdir(path)for filename in filename_listdir:if filename.find('txt') != -1:filenames.append(filename)return filenames# 生成文件清单
def add_data(excel_path, filenames):# 判断excel文件是否存在if os.path.exists(excel_path) is False:print(excel_path + ' 文件不存在,请重试')exit()excel_file = load_workbook(excel_path)  # 打开excel文件excel_sheet = excel_file['Sheet1']  # 选择Sheet1# 增加表头excel_sheet.cell(row=1, column=1, value='序号')  # 序号excel_sheet.cell(row=1, column=2, value='文件名')  # 文件名# 添加文件名count = 1for i in filenames[0:]:count = count + 1excel_sheet.cell(row=count, column=1, value=count - 1)  # 序号excel_sheet.cell(row=count, column=2, value=i)  # 文件名excel_file.save(excel_path)# 文件所在文件夹
file_path = './file'
# 【文件清单.xlsx】路径
excel_path = os.getcwd() + '/file/文件清单.xlsx'
filenames = find_txt(file_path)
print(filenames)
add_data(excel_path, filenames)
print('Success!')

运行结果:

三、文件的批量重命名

1、文件名批量增加序号

在文件整理统计时,经常要给文件名添加序号,在上面保存文件清单的过程,我们可以看到脚本的默认排序保存是按首位数字排序,在此我们可以通过补零来保证按数字大小排序。

1)重命名函数:

os.rename(name, new_name)

2)代码

import ospath = os.getcwd() + '\\file'
filenames = os.listdir(path)a = 1
for filename in filenames:if filename.find('txt') != -1:old_dir = f'{path}\\{filename}'if a < 10:new_dir = f'{path}\\00{a}-{filename}'elif a < 100:new_dir = f'{path}\\0{a}-{filename}'else:new_dir = f'{path}\\{a}-{filename}'os.rename(old_dir, new_dir)a = a + 1

3)运行结果

2、文件名批量重命名成指定文件名

我们在制作文件清单后,可以使用excel进行便捷的文件名统一调整(如去空格,增加头尾字段等)。我们可以在excel中制作好修改后的文件名后,再批量将文件名重命名。

1)实验目标

如图:我们尝试将文件名改成新文件名(使用 excel 的将 file 替换成filename )。

2)代码

from openpyxl import load_workbook
import os# 获取file路径文件名
def find_txt(path):filenames = []filename_listdir = os.listdir(path)for filename in filename_listdir:if filename.find('txt') != -1:filenames.append(filename)return filenames# 批量重命名
def change_file_name(file_path, excel_path, filenames):data = load_workbook(excel_path)sheet = data['Sheet1']for i in range(1, sheet.max_row + 1)[1:]:for filename in filenames:if filename == sheet.cell(i, 2).value:old_dir = os.path.join(file_path, filename)new_dir = os.path.join(file_path, sheet.cell(i, 3).value)os.rename(old_dir, new_dir)else:pass
# 文件所在文件夹
file_path = './file'
# 【文件清单.xlsx】路径
excel_path = os.getcwd() + '/file/文件清单.xlsx'
filenames = find_txt(file_path)
print(filenames)
change_file_name(file_path, excel_path, filenames)
print('Success!')

运行效果:

四、文件的批量删除

1、实验目标

我们在excel对文件名进行筛选后,将是否删除列为1的文件删除,保留为0的文件(如图)。

2、代码

from openpyxl import load_workbook
import os# 获取file路径文件名
def find_txt(path):filenames = []filename_listdir = os.listdir(path)for filename in filename_listdir:if filename.find('txt') != -1:filenames.append(filename)return filenames# 批量重命名
def change_file_name(file_path, excel_path, filenames):data = load_workbook(excel_path)sheet = data['Sheet1']for i in range(1, sheet.max_row + 1)[1:]:for filename in filenames:if filename == sheet.cell(i, 2).value:file_dir = os.path.join(file_path, filename)delete_flag = sheet.cell(i, 3).valueif delete_flag:os.remove(file_dir)else:pass
# 文件所在文件夹
file_path = './file'
# 【文件清单.xlsx】路径
excel_path = os.getcwd() + '/file/文件清单.xlsx'
filenames = find_txt(file_path)
print(filenames)
change_file_name(file_path, excel_path, filenames)
print('Success!')

运行结果:标记文件已删除。


如何使用Python进行批量文件整理 - 知乎“ 引言 ” 批量文件整理一直是日常工作中令人头疼的事,使用 Python 进行大批量文件整理,可以大大提升工作效率。下面来介绍几种批量文件整理的小技巧。 难度:⭐⭐ 一、准备工作 为了用于实验,我们使用代码生成…https://zhuanlan.zhihu.com/p/441915312

一、不同字符编码间的转换

windows 系统的默认编码是 GBK, 如果你把⼀段在 windows 系统上⽤ gbk 编码的字符发
送到 mac 电脑 上, mac 默认编码是 utf-8, 那这段⽂字是乱码显示的。 如何实现在 mac 上正常显示这段 gbk文本呢?
编码与解码

1.把任意编码转换成unicode的过程叫做解码

>>> s="卿云"
>>> s="卿云"#unicode格式
>>> s.encode("utf-8") #将其编码成utf-8
b'\xe5\x8d\xbf\xe4\xba\x91'
2.把unicode转换成的任意编码过程叫做编码

>>> s
'卿云'
>>> s.encode("utf-8").decode("utf-8")#把utf-8编码的字符在转化成unicode
'卿云'
3.

>>> s
'卿云'
>>> s.encode("utf-8") #将其编码成utf-8
b'\xe5\x8d\xbf\xe4\xba\x91
#会变成bytes字节格式,bytes字节类型是用16进制表示的,像\xe5这样两个16进制数是代表一个字节(因为一个16进制数占4位)
字节类型到底是什么

字节类型其实就是二进制数,只不过为了易于理解,常用16进制数表示。

# coding utf-8
import os
import chardet# 获得所有java文件的路径,传入根目录路径
def find_all_file(path: str) -> str:for root, dirs, files in os.walk(path):for f in files:if f.endswith('.java'):fullname = os.path.join(root, f)yield fullnamepasspasspass# 判断是不是utf-8编码方式
def judge_coding(path: str) -> dict:with open('utf.txt', 'rb') as f:  # 删除就行utf = chardet.detect(f.read()) # 同上with open(path, 'rb') as f:c = chardet.detect(f.read())if c != utf:            # 改为 c != 'utf-8'return c# 修改文件编码方式
def change_to_utf_file(path: str):for i in find_all_file(path):c = judge_coding(i)if c:change(i, c['encoding'])print("{} 编码方式已从{}改为 utf-8".format(i, c['encoding']))def change(path: str, coding: str):with open(path, 'r', encoding=coding) as f:text = f.read()with open(path, 'w', encoding='utf-8') as f:f.write(text)# 查看所有文件编码方式
def check(path: str):for i in find_all_file(path):with open(i, 'rb') as f:print(chardet.detect(f.read())['encoding'], ': ', i)def main():my_path = 'C:\\WorkSpace'change_to_utf_file(my_path)# check(my_path)if __name__ == '__main__':main()
import os
from chardet.universaldetector import UniversalDetectordef get_filelist(path):"""获取路径下所有csv文件的路径列表"""Filelist = []for home, dirs, files in os.walk(path):for filename in files:if ".csv" in filename:Filelist.append(os.path.join(home, filename))return Filelistdef read_file(file):"""逐个读取文件的内容"""with open(file, 'rb') as f:return f.read()def get_encode_info(file):"""逐个读取文件的编码方式"""with open(file, 'rb') as f:detector = UniversalDetector()for line in f.readlines():detector.feed(line)if detector.done:breakdetector.close()return detector.result['encoding']def convert_encode2utf8(file, original_encode, des_encode):"""将文件的编码方式转换为utf-8,并写入原先的文件中。"""    file_content = read_file(file)file_decode = file_content.decode(original_encode, 'ignore')file_encode = file_decode.encode(des_encode)with open(file, 'wb') as f:f.write(file_encode)def read_and_convert(path):"""读取文件并转换"""Filelist = get_filelist(path=path)fileNum= 0for filename in Filelist:try:file_content = read_file(filename)encode_info = get_encode_info(filename)if encode_info != 'utf-8':fileNum +=1convert_encode2utf8(filename, encode_info, 'utf-8')print('成功转换 %s 个文件 %s '%(fileNum,filename))except BaseException:print(filename,'存在问题,请检查!')def recheck_again(path):"""再次判断文件是否为utf-8"""    print('---------------------以下文件仍存在问题---------------------')Filelist = get_filelist(path)for filename in Filelist:encode_info_ch = get_encode_info(filename)if encode_info_ch != 'utf-8':print(filename,'的编码方式是:',encode_info_ch)print('--------------------------检查结束--------------------------')
if __name__ == "__main__":"""输入文件路径"""    path = './'read_and_convert(path)recheck_again(path)print('转换结束!')

如何使用Python进行批量文件整理相关推荐

  1. 用Python进行批量文件整理

    如何使用Python进行批量文件整理 " 引言 " 批量文件整理一直是日常工作中令人头疼的事,使用 Python 进行大批量文件整理,可以大大提升工作效率.下面来介绍几种批量文件整 ...

  2. python工具 - 批量文件重命名

    日常工作中经常会遇到这样的情况,需要将某个文件夹下的文件按着一定的规则进行重命名,当文件数量及其庞大的时候手工一个一个的去修需要耗费大量的时间,以下python工具可以协助批量修改文件名. 场景:某文 ...

  3. 手把手教你用Python实现批量文件的压缩处理

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 近乡情更怯,不敢问来人. 一.前言 ...

  4. Python对批量文件进行VAD检测和分段

    准备: python2.7/3.+   webrtcvad import collections import contextlib import sys import wave import os ...

  5. python office自动化_Python office automation:文档,python,自动化,办公,文件,篇,整理,一键,完成...

    文件整理不得不先提一下正则表达式 送上链接: python :re模块基本用法 一.列出文件夹下的所有文件 os.walk()用法 [ (当前目录列表),(子目录列表),(文件列表)]os.walk( ...

  6. Python+pywin32批量转换Word文件为PDF文件

    代码功能:把当前文件夹中多个Word文件批量转换为PDF文件 技术原理:代码实际上是调用了Word的"导出"功能,模拟了手工转换的操作并实现了自动化,要求已正确安装Python扩展 ...

  7. 高效率整理电脑上的文件:清理电脑文件方案需要 -- 合理的方法 + 合适的工具如Python查找重复文件

    有效管理电脑文档 出发点 推荐一适合大众用户的省时好用懒人方法 管好文件的基础 一. 数据/文件的分类 二. 数据/文件存放的地方 三. 数据/文件名称和文件夹名称的规范和技巧 查询重复文件的工具和方 ...

  8. python读取txt文件为dataframe,python批量读取txt文件为DataFrame

    我们有时候会批量处理同一个文件夹下的文件,并且希望读取到一个文件里面便于我们计算操作.比方我有下图一系列的txt文件,我该如何把它们写入一个txt文件中并且读取为DataFrame格式呢? 首先我们要 ...

  9. python实现批量移动文件到指定文件夹

    python实现批量移动文件到指定文件夹 因为前几天在整理数据集文件夹,需要将580多份120个文件移动到新建的文件夹中进行循环读取,也下载了不少软件试用,发现很多都需要会员才能处理大量文件,索性就自 ...

最新文章

  1. 五大洲30国在华留学生千年古城欢度中国年
  2. 014、Linux下vim搜索与替换
  3. [驱动注册]platform_driver_register()与platform_device_register()
  4. 【NLP】利用维基百科促进自然语言处理
  5. 除了Kaggle,还有哪些高质量的数据科学竞赛平台?
  6. AOJ GRL_1_C: All Pairs Shortest Path (Floyd-Warshall算法求任意两点间的最短路径)(Bellman-Ford算法判断负圈)
  7. sqoop把mysql数据导入hbase-完整记录
  8. Matlab里evalin和assignin的用法
  9. redis集群关闭 启动报错_使用虚拟机搭建 Redis 集群,实现数据库的负载均衡功能。...
  10. class循环获取 Undefined var str = '';
  11. c语言创造线性表储存复数,《c语言数结构》第02章 线性表.ppt
  12. android log4j slf4j,Android中的LOG4J
  13. 阿铭Linux_网站维护学习笔记20190304
  14. 【历史上的今天】5 月 1 日:AMD 成立;第一个 BASIC 程序跑通;世界上第一封垃圾邮件
  15. php判断是否submit,submit什么意思 php提交表单时判断 if$_POST[submit]与 ifisset$_POST[submit] 的区别...
  16. 爬虫--Item Pipeline 介绍(21)
  17. 计算机中操作系统的主要功能是什么,计算机中的操作系统的主要功能是什么
  18. 大数据资源争夺战此起彼伏 对用户而言是福是祸?
  19. javadoc 创建html,javadoc html标签
  20. 机器学习第三章笔记——决策树

热门文章

  1. 【手撕算法】AC显著性检测算法
  2. 为满足更多地区租车用车需求,神州租车不断扩大发展规模
  3. 2014艺考:北京电影学院表演系初试拾零
  4. token的加签解签
  5. homestead 安装mysql8_Homestead 安装其它的PHP版本
  6. 《Web3.0中国峰会暨IPFS区块链分布式存储行业大会》开启
  7. 1986 三 法兹·多米诺 Fats Domino
  8. Talend抽数工具使用整理
  9. 如何正确学习Node
  10. ‘c’ argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapp