python - 将文件复制到新目标时,带有父文件夹名称的 Python 前缀文件名
问题描述
我感谢任何帮助我的人,我对编程和 Python 非常陌生。我的情况是我有一些文件位于不同的子文件夹中。我想将文件复制到新的目的地,但在复制的文件名前加上源父文件夹或祖父文件夹名称。我下面的代码复制文件没有问题:
import os
import shutil
source = r'/Volumes/Folder1' + '//'
dest = r'/Volumes/Folder2' + '//'
for path, dir, files in os.walk(source):
for file in files:
if "red" in file.lower():
shutil.copy2(path + '//' + file, dest + file)
但是当我尝试将源文件夹名称添加到现有代码中时,如下所示,出现错误:
for file in files:
foldername = path.split("//")[-1]
if "red" in file.lower():
shutil.copy2(path + '//' + file, dest + file)
我知道我没有以正确的方式去做这件事,我觉得我必须使用 os.join 或其他东西。任何帮助表示赞赏。谢谢
解决方案
我为你做了一个简单的代码:
from shutil import copyfile
copyfile(os.path.join(path , file),os.path.join(dest , file))
阅读您的代码,我想知道为什么会有“//”。通常一个“/”就足够了,但你不必担心,使用os.path.join
推荐阅读
- javascript - 单击清除按钮后reactjs清除日期输入
- java - 基于http方法SpringBoot的显示字段
- flutter - 我应该将多块提供程序与多块侦听器一起使用吗?
- twitter-bootstrap - Bootstrap data-toggle 与 data-bs-toggle 属性有什么区别?
- c - 在变量和指针中使用 const 的区别
- wpf - 当 IsLabelCullingEnabled 为 true 时,始终显示第一个刻度标签
- node.js - 在Node JS中按路径的一部分过滤
- r - R. ggplot 堆叠直方图,时间序列,结合两个小时图
- python - 实现目标函数,使得元素将以特定模式最大化 (x1+x2)/5 +(x1+x2)/ 2 + (y1+y2)/4 依此类推
- java - Quarkus 中的 Oracle 数据库响应返回数字字符串