打开指定文件夹并批量修改文件名(python)

时间:2021-11-21 21:35:31

1. 以字符串的形式

import os
def rename_files():
#拿到文件名
path="F:\GIT\code\python\lesson1\prank"
file_list=os.listdir(path)
print(file_list)
#重命名
str="我想告诉你的是这个图片有毒呀希望没重复可以命名完全部原来还不足以匹配这么多张天啊金丝雀棣却"
i=0
for file in file_list:
pos = file.find(".jpg")
if pos!=-1:

os.rename(os.path.join(path,file),os.path.join(path,str[i])+".jpg")
i=i+1
rename_files()
print ("OK")
#重命名文件成自己想要设置的字符,字符的位数是固定的
#用到了循环 file_list 装的是从os.listdir返回的一个列表
#listdir()返回的是去除了“.”和“..”的文件/文件夹名字,无序
#str.find()返回的是一个数字,如果不存在为-1,存在就返回下标;
#find()有三种可选的参数,find(sub,[start,[end]])这是文档里的描述方式
#"["表示缺省,就是该项可选。例如:str.find(".jpg",4),从下标4开始;str.find(".jpg",4,6)从4开始,6结束。

关于os.path.join
#os.path.join(path,*paths),返回结果为两者的合并。如果合并后为一个完整绝对路径。#(c:/director/filename)

#如果第二个参数中存在盘符如"c:",将抛弃第一个参数的值仅返回第二个参数。
#如果两个参数都没有完整路径,则以当前盘为基础,将两个参数合并加在后面。
#os.path.join("c:", "foo") 结果为:X:/c:foo???

关于os.rename

#os.rename(path1,path2)没啥特别的就是将path1最右边的部分替换成path2最右边部分
#另外还有一个5参数的函数 os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=Non




2. 以字符替换的形式

import os
def rename_files():
#拿到文件名
path = r"C:\Users\VA\Desktop\prank"
file_list=os.listdir(path)
print(file_list)
#重命名
map=str.maketrans("","","0123456789")
for file in file_list:
os.rename(os.path.join(path,file),os.path.join(path,file.translate(map)))
rename_files()
print ("OK")

#关于 maketrans()
#当只有一个参数时,这个参数必须是字典 例如str.maketrans({'a':'firstletter'})
#如果有两个参数,则两个参数必须是等长字符串,用于对字符进行一对一映射
#如果还有三个参数,则第三个参数中的字符将被删除

#关于translate(table):
#3.x只能放一个值,而且必须为table类型.
#2.x似乎多一个参数可以控制删除,替换。且参数类型要求不同可以为String.