创作背景 我的需求 我的思路 首先,使用 os.walk() 递归遍历指定文件夹中所有的文件利用 () 判断是否为指定后缀的文件使用 os.() + copy 复制并修改文件名 问题再现 第一步创建目录倒没出现什么问题,代码如下:
import os
def walk_dir(DIR_PATH, COPY_PATH):
# 归一化路径的表示形式
DIR_PATH = DIR_PATH.replace('/', '\')
COPY_PATH = COPY_PATH.replace('/', '\')
# 新目录下创建旧目录中第一级子目录
for old in os.listdir(DIR_PATH):
new = os.path.join(COPY_PATH, old)
if os.path.isdir(old) and not os.path.exists(new):
os.mkdir(new)
print(f'mkdir {new} successfully')
第二步是 遍历文件 ,并且 判断是否为指定后缀的文件 (以 pdf 为例),代码如下
for root, dirs, files in os.walk(DIR_PATH):
for f in files:
if f.endswith('.pdf'):
pass
第三步 复制文件到指定文件夹 ,这一步出问题,先看原代码
# 遍历文件夹内所有文件
for root, _, files in os.walk(DIR_PATH):
for f in files:
if f.endswith('.pdf'):
f = os.path.join(root, f).replace('\', '/')
new = f.replace(root.replace('\', '/') + '/', '')
os.system(f'copy {f} {COPY_PATH}/{new}')
代码展示
DIR_PATH = r'【原目录】'
COPY_PATH = r'【新目录】'
def walk_dir():
global DIR_PATH, COPY_PATH
DIR_PATH = DIR_PATH.replace('/', '\')
COPY_PATH = COPY_PATH.replace('/', '\')
# 创建一级子目录
for old in os.listdir(DIR_PATH):
new = os.path.join(COPY_PATH, old)
if os.path.isdir(old) and not os.path.exists(new):
os.mkdir(new)
print(f'mkdir {new} successfully')
for root, dirs, files in os.walk(DIR_PATH):
for f in files:
if f.endswith('.pdf') or f.endswith('.doc'):
# 路径表示归一化
f = os.path.join(root, f).replace('/', '\')
# 用路径表示文件名,以 _ 分隔父子目录
# 将 _ 转换为 - ,将 转换为 _
new = f.replace(DIR_PATH + '\', '').replace('_', '-').replace('\', '_')
os.system(f'''copy "{f}" "{os.path.join(COPY_PATH, new)}"''')
结尾
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...