python批量只删除多层文件夹下的指定文件夹:“十位数-十位数-十位数-一串数字”且不删除压缩包
时间: 2023-07-16 19:13:14 浏览: 96
可以使用Python的os模块和shutil模块来实现。
首先,需要遍历多层文件夹下的所有文件和文件夹,可以使用os.walk()函数。
在遍历的过程中,对于每个文件夹,判断它的名称是否满足要求,如果满足要求,则使用shutil.rmtree()函数删除该文件夹。
同时,需要注意的是,如果该文件夹包含压缩包,则不应该删除该文件夹。可以使用os.path.splitext()函数来判断文件是否为压缩包。
下面是一个示例代码:
```python
import os
import shutil
# 遍历文件夹
for root, dirs, files in os.walk('/path/to/folder'):
for name in dirs:
# 判断文件夹名称是否满足要求
if len(name) == 28 and name[:10].isdigit() and name[10] == '-' and name[11:21].isdigit() and name[21] == '-' and name[22:32].isdigit() and name[32:].isdigit():
folder_path = os.path.join(root, name)
# 判断文件夹是否包含压缩包
if not any(os.path.splitext(file)[1] in ['.zip', '.rar', '.7z'] for file in os.listdir(folder_path)):
# 删除文件夹
shutil.rmtree(folder_path)
```
需要替换代码中的`/path/to/folder`为实际的文件夹路径。其中,`name[:10].isdigit()`表示判断字符串前10个字符是否全为数字,`name[10] == '-'`表示判断第11个字符是否为横杠,以此类推。`any(os.path.splitext(file)[1] in ['.zip', '.rar', '.7z'] for file in os.listdir(folder_path))`表示判断文件夹中是否包含压缩包。
阅读全文