1 优雅的获取文件后缀名

import os
file_ext = os.path.splitext('./data/py/test.py')
front,ext = file_ext
In [5]: front
Out[5]: './data/py/test'In [6]: ext
Out[6]: '.py'

2 批量修改文件后缀

本例子使用Python的os模块和 argparse模块,将工作目录work_dir下所有后缀名为old_ext的文件修改为后缀名为new_ext

通过本例子,大家将会大概清楚argparse模块的主要用法。

导入模块

import argparse
import os

定义脚本参数

def get_parser():parser = argparse.ArgumentParser(description='工作目录中文件后缀名修改')parser.add_argument('work_dir', metavar='WORK_DIR', type=str, nargs=1,help='修改后缀名的文件目录')parser.add_argument('old_ext', metavar='OLD_EXT',type=str, nargs=1, help='原来的后缀')parser.add_argument('new_ext', metavar='NEW_EXT',type=str, nargs=1, help='新的后缀')return parser

后缀名批量修改

def batch_rename(work_dir, old_ext, new_ext):"""传递当前目录,原来后缀名,新的后缀名后,批量重命名后缀"""for filename in os.listdir(work_dir):# 获取得到文件后缀split_file = os.path.splitext(filename)file_ext = split_file[1]# 定位后缀名为old_ext 的文件if old_ext == file_ext:# 修改后文件的完整名称newfile = split_file[0] + new_ext# 实现重命名操作os.rename(os.path.join(work_dir, filename),os.path.join(work_dir, newfile))print("完成重命名")print(os.listdir(work_dir))

实现Main

def main():"""main函数"""# 命令行参数parser = get_parser()args = vars(parser.parse_args())# 从命令行参数中依次解析出参数work_dir = args['work_dir'][0]old_ext = args['old_ext'][0]if old_ext[0] != '.':old_ext = '.' + old_extnew_ext = args['new_ext'][0]if new_ext[0] != '.':new_ext = '.' + new_extbatch_rename(work_dir, old_ext, new_ext)

3 从路径中提取文件

In [11]: import os...: file_ext = os.path.split('./data/py/test.py')...: ipath,ifile = file_ext...:In [12]: ipath
Out[12]: './data/py'In [13]: ifile
Out[13]: 'test.py'

4 查找指定后缀名的文件

import osdef find_file(work_dir,extension='jpg'):lst = []for filename in os.listdir(work_dir):print(filename)splits = os.path.splitext(filename)ext = splits[1] # 拿到扩展名if ext == '.'+extension:lst.append(filename)return lstr = find_file('.','md')
print(r) # 返回所有目录下的md文件

5 批量转换xls文件为xlsx

#批量转换文件xls-xlsx
import win32com.client as win32
import os.path
import osdef xls2xlsx():    rootdir = r"C:\Users\CQ375\Desktop\temp1" #需要转换的xls文件存放处rootdir1 = r"C:\Users\CQ375\Desktop\ex" #转换好的xlsx文件存放处files = os.listdir(rootdir) #列出xls文件夹下的所有文件num = len(files) #列出所有文件的个数for i in range(num): #按文件个数执行次数kname = os.path.splitext(files[i])[1] #分离文件名与扩展名,返回(f_name, f_extension)元组if kname == '.xls': #判定扩展名是否为xls,屏蔽其它文件fname = rootdir + '\\' + files[i] #合成需要转换的路径与文件名fname1 = rootdir1 + '\\' + files[i] #合成准备存放转换好的路径与文件名excel = win32.gencache.EnsureDispatch('Excel.Application') #调用win32模块wb = excel.Workbooks.Open(fname) #打开需要转换的文件wb.SaveAs(fname1+"x", FileFormat=51) #文件另存为xlsx扩展名的文件wb.Close()excel.Application.Quit()if __name__ == '__main__':xls2xlsx()

6 目录下所有文件的修改时间

import os
import datetime
print(f"当前时间:{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
for root,dirs,files in os.walk(r"D:\works"):#循环D:\works目录和子目录for file in files:absPathFile=os.path.join(root,file)modefiedTime=datetime.datetime.fromtimestamp(os.path.getmtime(absPathFile))now=datetime.datetime.now()diffTime=now-modefiedTimeif diffTime.days<20:#条件筛选超过指定时间的文件print(f"{absPathFile:<27s}修改时间[{modefiedTime.strftime('%Y-%m-%d %H:%M:%S')}]\
距今[{diffTime.days:3d}天{diffTime.seconds//3600:2d}时{diffTime.seconds%3600//60:2d}]")#打印相关信息

7 批量压缩文件夹和文件

import zipfile  # 导入zipfile,这个是用来做压缩和解压的Python模块;
import os
import timedef batch_zip(start_dir):start_dir = start_dir  # 要压缩的文件夹路径file_news = start_dir + '.zip'  # 压缩后文件夹的名字z = zipfile.ZipFile(file_news, 'w', zipfile.ZIP_DEFLATED)for dir_path, dir_names, file_names in os.walk(start_dir):# 这一句很重要,不replace的话,就从根目录开始复制f_path = dir_path.replace(start_dir, '')f_path = f_path and f_path + os.sep  # 实现当前文件夹以及包含的所有文件的压缩for filename in file_names:z.write(os.path.join(dir_path, filename), f_path + filename)z.close()return file_newsbatch_zip('./data/ziptest')

8 文件读操作

import os
# 创建文件夹def mkdir(path):isexists = os.path.exists(path)if not isexists:os.mkdir(path)
# 读取文件信息def openfile(filename):f = open(filename)fllist = f.read()f.close()return fllist  # 返回读取内容

9 文件写操作

# 写入文件信息
# example1
# w写入,如果文件存在,则清空内容后写入,不存在则创建
f = open(r"./data/test.txt", "w", encoding="utf-8")
print(f.write("测试文件写入"))
f.close# example2
# a写入,文件存在,则在文件内容后追加写入,不存在则创建
f = open(r"./data/test.txt", "a", encoding="utf-8")
print(f.write("测试文件写入"))
f.close# example3
# with关键字系统会自动关闭文件和处理异常
with open(r"./data/test.txt", "w") as f:f.write("hello world!")

10 分词并保存文件

pkuseg是北大开源的一个中文分词工具包,它在多个分词数据集上都有非常高的分词准确率,比经常使用的jieba分词性能和效果要更好。

下面使用pkusegcut函数,分词后统计前10频率词,并按照所有词的频次由高到低写入到文件cut_words.csv 中。

这是需要切分的段落:

mystr = """Python 语言参考 描述了 Python 语言的具体语法和语义,
这份库参考则介绍了与 Python 一同发行的标准库。
它还描述了通常包含在 Python 发行版中的一些可选组件。
Python 标准库非常庞大,所提供的组件涉及范围十分广泛,
正如以下内容目录所显示的。这个库包含了多个内置模块 (以 C 编写),
Python 程序员必须依靠它们来实现系统级功能,
例如文件 I/O,此外还有大量以 Python 编写的模块,
提供了日常编程中许多问题的标准解决方案。
其中有些模块经过专门设计,
通过将特定平台功能抽象化为平台中立的 API 来鼓励和加强 Python 程序的可移植性。
Windows 版本的 Python 安装程序通常包含整个标准库,
往往还包含许多额外组件。对于类 Unix 操作系统,
Python 通常会分成一系列的软件包,
因此可能需要使用操作系统所提供的包管理工具来获取部分或全部可选组件。"""

几行代码就完成上述工作:

from pkuseg import pkuseg
from collections import Counterseg = pkuseg()
words = seg.cut(mystr)
frequency_sort = Counter(words).most_common()
with open('./data/cut_words.csv', 'w') as f:for line in frequency_sort:f.write(str(line[0])+',' + str(line[1])+"\n")print('writing done')

出现最高频的前10个词语:

Counter(words).most_common(10)
# [('的', 12), (',', 11), ('Python', 10), ('。', 7), ('了', 5), ('包含', 4), ('组件', 4), ('标准库', 3), ('通常', 3), ('所', 3)]

备注:公众号菜单包含了整理了一本AI小抄非常适合在通勤路上用学习

往期精彩回顾2019年公众号文章精选适合初学者入门人工智能的路线及资料下载机器学习在线手册深度学习在线手册AI基础下载(第一部分)备注:加入本站微信群或者qq群,请回复“加群”加入知识星球(4600+用户,ID:92416895),请回复“知识星球”

喜欢文章,点个在看

10个关于文件操作的小功能(Python),都很实用~相关推荐

  1. Pandas 4 个小 trick,都很实用!

    1 读取时抽样 1% 对于动辄就几十或几百个 G 的数据,在读取这么大数据时,有没有办法随机选取一小部分数据,然后读入内存,快速了解数据和开展 EDA ? 使用 Pandas 的 skiprows 和 ...

  2. 苹果手机隐藏很深的四个功能,个个都很实用,不提很少有人知道

    你真的会用自己手中的iPhone吗?像备忘录可以扫描文档.相册可以隐藏照片这些小功能你都知道呢? 其实苹果手机里的功能远远不止这些,有很多功能是隐藏很深的,今天就来给大家细说一下苹果手机的黑科技功能, ...

  3. 第10节:文件操作/os模块/shutil模块/递归算法原理

    文章目录 文件 1.文本文件和二进制文件 2.文件操作相关模块概述 3.创建文件对象open() 4.文本文件的写入 编码知识_中文乱码问题解决 write()/whiteline()写入操作 clo ...

  4. python文件操作模式是什么,python --文件操作模式详解

    #f= open(r"aaa/a.txt",mode='rt') # f的值是一种变量,占用的是应用程序的内存空间,此时牵扯的是两个方面的资源 #print(f) ##2.操作文件 ...

  5. 微软Win10这些黑科技小功能你都用过吗

    本文转载自IT之家,Win10 已经发布好一段时间了,在今年下半年还将会迎来 21H2 的大更新.当前,很多朋友对于 Win10 其实是有所不满的,割裂的 UI.经常变动的功能,让人感觉这就是一个半成 ...

  6. ipad分屏功能怎么开启_iPad 重大更新!14个新功能,每个都很实用

    苹果今年最重磅的更新,就是把 iPad 系统独立出来了. 很多朋友表示更新到 iPadOS 后就不会用了,小雷可以理解,毕竟不是所有人都像我这样,每天没事抱着机器研究. 所以小雷这就给大家奉上一期,最 ...

  7. Mac开发-10.14获取文件操作权限-管理员权限获取

    文章目录 使用NSAppleScript来操作 使用Security框架来获取权限 ServiceManagement注册LaunchdDaemon Mac os 10.14以及 Mac os 10. ...

  8. c语言10怎么打开文件,Lecture 10 C语言文件操作

    博主不定期更新[保研/推免.C/C++.5G移动通信.Linux.生活随笔]系列文章,喜欢的朋友[点赞+关注]支持一下吧! Lecture 10 文件 1. 文件 1.1 格式化输入输出 printf ...

  9. 文件操作的小tips

    freopen 功 能: 替换一个流,或者说重新分配文件指针,实现重定向. eg:   freopen("in.txt","r",stdin); freopen ...

最新文章

  1. 参加UI培训有发展吗?
  2. 用价值锚定革掉股市的命!
  3. 使3D空间中物体朝向和其速度方向一致的旋转矩阵计算方案
  4. 蓝桥杯_算法训练_表达式计算
  5. bzoj1190 [HNOI2007]梦幻岛宝珠 动态规划
  6. 虚拟机下Ubuntu配置IP地址和网段
  7. 一个单片机ADC的挖坑填坑之旅
  8. 基于神经网络的文本分类(基于Pytorch实现)
  9. mongodb备份和恢复:mongodump/mongorestore ( 二)
  10. Tosca 注意事项(持续更新)
  11. Hive 中 insert into 与with as连用
  12. Datawhale编程学习之图(6)
  13. linux-centos6.5一键安装 Redmine
  14. qt qtableview 刷新列表_qt中Qtableview的用法
  15. 北大计算机专业考研难不难,北京大学考研有多难 难考的原因是什么
  16. 厦门大学信息学院夏令营经历
  17. Python 温度转换
  18. 1. 认识kubernetes
  19. Markdown与LATEX
  20. 第九周.02.KAT

热门文章

  1. Docker基本命令与使用 —— Docker容器(一)
  2. Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作
  3. 打算写的文章,先写个标题
  4. 再谈多态——向上映射及VMT/DMT(转)
  5. 怎么样处理好学科竞赛与文化课学习之间的关系,,学习下,,
  6. DNN模块开发入门指导
  7. java frame button_java – 从Button打开一个新的JFrame
  8. shell换行合并多个文件_如何合并多个pdf文件?这里有合并PDF最简单的方法
  9. php psr2规范,php标准规范详解
  10. 基于pygame的射击小游戏制作(四)击杀外星人