一些列不同文件夹
在每个文件夹的三级子文件夹中都有同名csv 文件,Defect_CMreport.csv
我需要遍历所有文件夹,实现以下功能
将Defect_CMreport.csv 重命名为“一级文件夹名+二级文件夹前17个字符+Defect_CMreport.csv”
例如“LE2B029-080104_20221217_13-02-54_Defect_CMreport.csv”
将所有重命名过的文件统一放在指定的path 下
试一下下面的代码实现,里面的路径部分你可以根据实际情况配置一下,有问题可以随时反馈,望采纳
import os
# 设置要遍历的根文件夹路径
root_path = '/path/to/root/folder'
# 设置要将重命名后的文件放到的路径
target_path = '/path/to/target/folder'
# 创建 target_path 文件夹,如果文件夹已存在则不会创建
os.makedirs(target_path, exist_ok=True)
# 遍历所有文件夹和子文件夹
for root, dirs, files in os.walk(root_path):
# 遍历所有文件
for file in files:
# 如果文件名是 Defect_CMreport.csv
if file == 'Defect_CMreport.csv':
# 获取文件所在的一级文件夹名和二级文件夹名的前 17 个字符
folder1 = root.split('/')[-2]
folder2 = root.split('/')[-1][:17]
# 重命名文件
new_file_name = folder1 + '_' + folder2 + '_Defect_CMreport.csv'
# 获取文件的完整路径
file_path = os.path.join(root, file)
# 获取重命名后文件的完整路径
new_file_path = os.path.join(target_path, new_file_name)
# 重命名文件并移动到指定路径
os.rename(file_path, new_file_path)
import os
root = "D:\\"
aim_path=''
for dirpath, dirnames, filenames in os.walk(root):
for filepath in filenames:
temp=os.path.join(dirpath, filepath)
if temp.endswith('Defect_CMreport.csv'):
a=temp.split('\\')
os.rename(temp,aim_path+'\\'+a[0]+'_'a[1][:17]+'_'+'Defect_CMreport.csv')
import os
import shutil
# 要遍历的文件夹路径
root_dir = "/path/to/root"
# 目标文件夹路径
target_dir = "/path/to/target"
# 遍历文件夹中的所有文件和子文件夹
for root, dirs, files in os.walk(root_dir):
# 对于每个文件
for file in files:
# 如果文件名是 "Defect_CMreport.csv"
if file == "Defect_CMreport.csv":
# 获取文件的完整路径
file_path = os.path.join(root, file)
# 获取一级文件夹名称
first_level_dir_name = os.path.basename(os.path.dirname(root))
# 获取二级文件夹名称的前 17 个字符
second_level_dir_name = os.path.basename(root)[:17]
# 生成新的文件名
new_file_name = f"{first_level_dir_name}_{second_level_dir_name}_Defect_CMreport.csv"
# 生成新的文件路径
new_file_path = os.path.join(target_dir, new_file_name)
# 移动文件到目标文件夹并重命名
shutil.move(file_path, new_file_path)
这也可以
Sub doc2docx() 'doc文件转docx文件
Dim myDialog As FileDialog
Set myDialog = Application.FileDialog(msoFileDialogFilePicker)
Dim oFile As Object
Dim oFilePath As Variant
With myDialog
.Filters.Clear '清除所有文件筛选器中的项目
.Filters.Add "所有 WORD2007 文件", "*.doc", 1 '增加筛选器的项目为所有doc文件
.AllowMultiSelect = True '允许多项选择
If .Show = -1 Then '确定
For Each oFilePath In .SelectedItems '在所有选取项目中循环
Set oFile = Documents.Open(oFilePath)
oFile.SaveAs FileName:=Replace(oFilePath, "doc", "docx"), FileFormat:=16
oFile.Close
Next
End If
End With
End Sub