整理项目代码的时候因为需要将.py后缀名的转变为.pyx的,秉承着不重复造轮子的理论,在网上搜刮了一波,并不是没有发掘的可用的代码,而是写着不是那么清晰,所以我稍微重构了一下代码,顺便把一些常用且有可能用到功能也加上了。
以下代码可以:
- 输出文件夹目录结构,将里面所有文件路径存入一个列表内
- 批量更改想需更改的文件后缀名
- 批量重名文件
import os
import os.path
class walk_dir:
def __init__(self):
self.files = None
def show(self, path, deepth=0):
"""
获取文件夹目录结构,并找出其中所有的文件组成列表
@param path:文件夹路径
@param deepth: 深度,默认参数即可,不用设置
@return:
"""
self.files = list()
if deepth == 0:
print("root:" + path + "")
for item in os.listdir(path):
print(" " * deepth + "+--" + item)
new_item = path + '\\' + item
if os.path.isdir(new_item):
self.show(new_item, deepth + 1)
else:
self.files.append(new_item)
return self.files
def change_name(self, path, new_name):
"""
批量更改文件夹下的文件名,文件名自动递加,如lin0,lin1,lin2...
@param path: 文件夹路径
@param new_name: 新的文件名(lin)
@return:
"""
self.show(path)
for file in self.files:
os.rename(file,
"\\".join(os.path.splitext(file)[0].split("\\")[:-1]) + "\\" + new_name + str(
self.files.index(file)) + os.path.splitext(file)[1])
def change_type(self, path, old_suffix, new_suffix):
"""
批量更改文件夹下的文件后缀名
@param path: 文件夹路径
@param old_suffix: 需要更改的文件后缀名(".py")
@param new_suffix: 新的文件后缀名(".pyx")
@return:
"""
self.show(path)
for file in self.files:
file_type = os.path.splitext(file)[1] # 文件类型
if file_type == old_suffix:
os.rename(file, os.path.splitext(file)[0] + new_suffix)
if __name__ == '__main__':
walk_dir = walk_dir()
walk_dir.change_name(r'C:\Users\Administrator\Desktop\test', 'lin')