python-3.x 删除目录中的所有文件,用正斜杠替换反斜杠,在需要的地方创建目录

0ve6wy6x  于 2023-10-21  发布在  Python
关注(0)|答案(1)|浏览(142)

ATM,我有一个目录的各种文件与反斜杠的文件名,创建新的目录需要的地方。
我有:

directory 'test'
| 'folder\screenshot.png'
| 'folder\screenshot_2.png'
| 'folder_other\screenshot_3.png

我正在寻找:

directory 'test_'
| directory 'folder'
     | 'screenshot.png'
     | 'screenshot_2.png'
| directory 'folder_other'
     | 'screenshot_3.png'

我已经尝试了以下操作,但不断得到错误No such file or directory: 'folder_other\\screenshot.png'

import shutil

for file in os.listdir('test'):
    src = file
    dst = file.replace('\\','/').replace('test', 'test_')
    ret = shutil.move(src, dst)

print(ret)
vpfxa7rd

vpfxa7rd1#

您可以使用Python标准库中的pathlib来方便地移动和操作文件路径。这通常比将路径作为字符串操作更可取。
使用pathlib,在源文件路径和目标文件路径之间进行转换以及在移动文件之前递归地创建父目录相对容易。

import pathlib

base = pathlib.Path.cwd()
source_base = base.joinpath("test")
target_base = base.joinpath("test_")

for file in source_base.iterdir():
    target_path = target_base.joinpath(*file.name.split("\\"))

    target_path.parent.mkdir(parents=True, exist_ok=True)
    file.rename(target_path)

使用前:

test
├── folder_other\screenshot_3.png
├── folder\screenshot_2.png
└── folder\screenshot.png

之后:

test
test_
├── folder
│   ├── screenshot_2.png
│   └── screenshot.png
└── folder_other
    └── screenshot_3.png

相关问题