gpt4 book ai didi

python - 如果文件夹中存在文件,请更改文件夹名称

转载 作者:行者123 更新时间:2023-12-01 06:35:51 24 4
gpt4 key购买 nike

我有一个非常大的目录树,如果文件夹中包含文件,我想通过它自动更改文件夹名称的操作。这是我目前所拥有的:

import os 
import shutil
from os import path
import glob

# Directory to be scanned
os.chdir('U:\\')
path = '.'

# r=root, d=directories, f = files
for r, d, f in os.walk(path):
for file in f:
if '.txt' in file:
dir_path = os.path.dirname(os.path.realpath('stuff.txt'));

os.rename(dir_path, dir_path + '_data')

我收到以下错误,但目前没有管理员权限来确保脚本能够正常工作。

PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'U:\' -> 'U:\_data'

最佳答案

您无法通过这种方式修改驱动器名称 (U:/),因此您会收到第一个 PermissionError。您也不能在迭代期间修改目录名称 (os.walk),否则您将错过子文件夹。因此我提出以下建议:

  1. 创建一个空列表来记住要重命名的目录路径
  2. 扫描后,反转列表并迭代它 - 这样最长的路径应该首先被处理
  3. 重命名目录或通知错误

代码如下:

import os

# Directory to be scanned
os.chdir('U:\\')
path = '.'

dirs_to_rename = list()

for root_dir, dirs, files in os.walk(path):
for file in files:
if '.txt' in file:
dirs_to_rename.append(root_dir)
break

for dir_to_rename in dirs_to_rename[::-1]:
try:
print(f"Renaming {dir_to_rename}")
os.rename(dir_to_rename, dir_to_rename + '_data')
except OSError as e:
print(f"Skipping {dir_to_rename} - {e}")

我用几层文件夹快速运行了它,它似乎工作得很好,但你可能需要稍微调整一下。

关于python - 如果文件夹中存在文件,请更改文件夹名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59672284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com