如何解决根据全局列表复制和重命名子目录中的文件
我正在尝试将所有子目录中名为“mypicture.jpg”的所有文件复制并重命名为“picture.jpg”。如果我这样做:
import glob
source = glob.glob('**/mypicture.jpg',recursive=True)
print(source)
它显示了我所有的mypicture.jpg,但是是否可以根据列表复制和重命名每个目录中的.jpg?
在 shell 中我只做:
find ./ -name 'mypicture.jpg' -execdir cp -prv '{}' './picture.jpg' ';'
它做我想做的事。
只是为了复制和重命名我可以使用 shutil.copyfile(source,destination)
但只是文件的路径,所以我的问题是:
如何将文件路径从我的列表传递到我的 source=
并循环/迭代它然后对列表中的所有文件?这甚至可能吗?还是我必须使用其他功能?
好的,使用路径库:
from pathlib import Path
import shutil
dirpath=Path(r'W:/directory')
files=dirpath.rglob("mypicture.jpg")
for path in files:
print(path)
shutil.copy(path,path.parent / 'picture.jpg',follow_symlinks=True)
它有效,我有什么需要注意的吗?
解决方法
#import modules
from pathlib import Path
import shutil
#define directory
dirpath=Path('W:/directory')
#search for files path with given name in dir and subdir using rglob
files=dirpath.rglob("mypicture.jpg")
#copy file in same directory with new name to rename
for path in files:
print(path)
shutil.copy(path,path.parent / 'picture.jpg',follow_symlinks=True)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。