我有一个目录/ a/b/c,它有文件和子目录.我需要复制/ x/y/z目录中的/ a/b/c/*.我可以使用哪些python方法?
我试过shutil.copytree("a/b/c", "/x/y/z"),但python尝试创建/ x/y/z并引发一个error "Directory exists".
对 Python 非常陌生,所以请耐心等待。如果目录存在,我只想移动目录的内容。否则,想移动整个目录。清理输入目录也很理想。这是我到目前为止所拥有的,由于某种原因,这不起作用:
#!/usr/bin/python
import sys, os, glob, shutil
in_dir = '/images_in/'
out_dir = '/images_out/'
new_dirs = os.listdir(in_dir)
old_dirs = os.listdir(out_dir)
#See if directory already exists. If it doesnt exists, move entire
directory. If it does exists, move only new images.
for dir in new_dirs:
if dir not in old_dirs:
shutil.move(dir, out_dir)
else:
new_images = glob.glob(in_dir + dir + '*.jpg')
for i in new_images:
shutil.move(i, out_dir + dir + i)
Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法来cp -r from_dir/* to_dir使用python 模拟命令?shutil.copytree不适合因为to_dir存在.
我正在尝试使用shutilPython复制目录树。
我这样做:
shutil.copytree(source,target,False,lambda x,y:[r for r in y if os.path.isfile(r)]);
Run Code Online (Sandbox Code Playgroud)
其中source是源目录的路径target,source是将要在其中进行复制的不存在目录的名称。
第三个参数表示符号链接的处理。
根据我在文档中的理解,最后一个参数应该是一个函数,它输入两个参数并返回将从副本中排除的文件名列表。第一个输入是当前目录的名称,以shutil递归方式遍历树,第二个输入是其内容列表。
这就是为什么我输入一个 lambda 试图返回列表中的那些文件元素。
但这是行不通的。它正在复制一切。
我哪里糊涂了?
我想做的是,如果我有
source\
subdir1\
file11.txt
file12.txt
subdir2\
file21.txt
Run Code Online (Sandbox Code Playgroud)
我想获得
target\
subdir1\
subdir2\
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我想我可以使用walkor自己编写副本glob,但我认为shutil使用起来很简单。
我正在尝试制作一个基本程序,以便在插入时从记忆棒中备份一个文件夹,(我知道已有程序可以执行此操作,但这并不好玩!)但是我的权限有问题.
from shutil import copy2
copy2('F:/Python/Library', 'C:/Users/Torran/Desktop/Python')
Run Code Online (Sandbox Code Playgroud)
这就是我到目前为止所做的全部工作,因为我希望在进行部分插入检测之前让复制部件工作.然而,当我运行它时,它一直给我一个PermissionError......
PermissionError: [Errno 13] Permission denied: 'F:/Python/Library'
Run Code Online (Sandbox Code Playgroud)
我知道Python脚本只能访问保存到的文件夹中的文件夹,但是这并不是真的有用,因为我需要从记忆棒中复制一个文件夹并将其粘贴到桌面上的文件夹中,所以我需要一种让此脚本可以访问保存到的文件夹之外的文件夹的方法.