最近由于有批量处理文件的需要简单的使用了一下python来对文件进行批量操作
需求:批量修改文件名称
因为有些编号被删除 要重新按顺序编号
因此采取读取目录下的文件名称 然后修改称保存到另外一个文件夹中
使用了os和shutil库
import shutil
import os
def copy_name(path):
action_list = os.listdir(path)
action_list.sort(key=lambda x:int(x[:-5]))
for temp in action_list:
print(temp)
i=109
for name in action_list:
shutil.copy(path+"\\"+name ,r'C:\Users\84675\Desktop\new2\{}.mtnx'.format(i))
i=i+1
re_name(r'C:\Users\84675\Desktop\动作2\134~266动作(无重复)')
os.listdir(" 路径") 读取目录下的所有文件名称并返回列表 返回的列表是乱序的
因此
要读取文件编号(数字)然后排序 action_list.sort(key=lambda x:int(x[:-5]))
然后拷贝文件并按序命名到到另一个文件夹中
shutil.copy(path+"\\"+name ,r'C:\Users\84675\Desktop\new2\{}.mtnx'.format(i))
正则表达式处理文本文件
re.search 搜索指定的字符串(不是从头开始匹配)
re.S表示 ‘.’也可以匹配/n
re.search 返回一个对象
如果使用page.string() 打印的话会打印出原字符串 (就是在这里卡了好久)
要使用page.group()才能把要找的东西给打印出来
page.span() 返回匹配字符串的的位置信息
re.sub(‘正则表达式’,‘替换成什么字符串’,‘字符串’ ) 找到指定字符串并替换
文件读取
读文件
‘r’代表读取文件
encoding= ‘utf8’ 使用utf8 编码
路径前最好加上r表示把\当成是正常字符而不是转义
f.readlines()以\n为结尾返回一个list
f.read()
正常输入换行
写
我的需求是新建一个文件并将列表里的数据放入文件中
pages为一个列表
w'这个模式是这样:如果没有这个文件,就创建一个;如果有,那么就会先把原文件的内容清空再写入新的东西。所以若不想清空原来的内容而是直接在后面追加新的内容,就用'a'这个模式。
- write()方法和read()、readline()方法对应,是将字符串写入到文件中。
- writelines()方法和readlines()方法对应,也是针对列表的操作。它接收一个字符串列表作为参数,将他们写入到文件中,换行符不会自动的加入,因此,需要显式的加入换行符。