标签: copytree

如何使用Python将整个文件目录复制到现有目录中?

从包含名为bar(包含一个或多个文件)的目录和名为baz(还包含一个或多个文件)的目录的目录中运行以下代码.确保没有名为的目录foo.

import shutil
shutil.copytree('bar', 'foo')
shutil.copytree('baz', 'foo')
Run Code Online (Sandbox Code Playgroud)

它将失败:

$ python copytree_test.py 
Traceback (most recent call last):
  File "copytree_test.py", line 5, in <module>
    shutil.copytree('baz', 'foo')
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/shutil.py", line 110, in copytree
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.py", line 172, in makedirs
OSError: [Errno 17] File exists: 'foo'
Run Code Online (Sandbox Code Playgroud)

我希望它的工作方式与我输入的方式相同:

$ mkdir foo
$ cp bar/* foo/
$ cp baz/* foo/
Run Code Online (Sandbox Code Playgroud)

我是否需要使用shutil.copy()将每个文件复制bazfoo?(之后我已经将'bar'的内容复制到'foo'中shutil.copytree()?)或者是否有更简单/更好的方法?

python shutil copytree

182
推荐指数
6
解决办法
21万
查看次数

使用python将目录内容复制到目录中

我有一个目录/ 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 shutil copytree

64
推荐指数
1
解决办法
8万
查看次数

使用shutil.copytree时过滤目录?

有没有办法可以使用绝对路径过滤目录?

shutil.copytree(directory,
                target_dir,
                ignore = shutil.ignore_patterns("/Full/Path/To/aDir/Common")) 
Run Code Online (Sandbox Code Playgroud)

当尝试过滤位于" aDir" 下的"公共"目录时,这似乎不起作用.如果我这样做:

shutil.copytree(directory,
                target_dir,
                ignore = shutil.ignore_patterns("Common"))
Run Code Online (Sandbox Code Playgroud)

它可以工作,但每个名为Common的目录都将在"树"中进行过滤,这不是我想要的.

有什么建议 ?

谢谢.

python shutil copytree

11
推荐指数
1
解决办法
1万
查看次数

Python shutil copytree:使用ignore函数保留特定的文件类型

我试图弄清楚如何将CAD图纸(".dwg",".dxf")从包含子文件夹的源目录复制到目标目录,并维护原始目录和子文件夹结构.

  • 原始目录:H:\ Tanzania ...\Bagamoyo_Single_line.dw​​g
  • 源目录:H:\ CAD\Tanzania ...\Bagamoyo_Single_line.dw​​g

我在以下帖子中找到了@martineau的以下答案:Python Factory Function

from fnmatch import fnmatch, filter
from os.path import isdir, join
from shutil import copytree

def include_patterns(*patterns):
    """Factory function that can be used with copytree() ignore parameter.

    Arguments define a sequence of glob-style patterns
    that are used to specify what files to NOT ignore.
    Creates and returns a function that determines this for each directory
    in the file hierarchy rooted at the source directory when used with
    shutil.copytree(). …
Run Code Online (Sandbox Code Playgroud)

python ignore copytree

10
推荐指数
1
解决办法
1万
查看次数

有没有办法在Python中断shutil copytree操作?

我对编程很新.我需要开发一个程序,可以一次复制多个目录,并考虑多个文件类型异常.我遇到了shutil模块,它提供了copytree和ignore_patterns函数.这是我的代码片段,它也使用wxPython多目录对话框:

import os
import wx
import wx.lib.agw.multidirdialog as MDD
from shutil import copytree
from shutil import ignore_patterns

app = wx.App(0)
dlg = MDD.MultiDirDialog(None, title="Custom MultiDirDialog", defaultPath=os.getcwd(),  agwStyle=MDD.DD_MULTIPLE|MDD.DD_DIR_MUST_EXIST)

dest = "Destination Path"

if dlg.ShowModal() != wx.ID_OK:
    dlg.Destroy()

paths = dlg.GetPaths()

ext = ['*.tiff', '*.raw', '*.p4p', '*.hkl', '*.xlsx']

for path in enumerate(paths):
    directory = path[1].replace('Local Disk (C:)','C:')
    copytree(directory, dest, ignore=ignore_patterns(directory, *ext))

dlg.Destroy()
app.MainLoop()
Run Code Online (Sandbox Code Playgroud)

这段代码对我很有用.有时,我会复制太字节数据.无论如何,shutil.copytree可以被打断吗?我问这个,因为我第一次运行这个程序时,我选择了一个相当大的目录并且意外地复制了大量的文件(成功!)并想要阻止它:(.一旦我解决了这个问题,我终于开始了在GUI上!如果有我可以提供的更多信息,请告诉我!提前感谢您的任何帮助!

python wxpython shutil copytree python-3.x

5
推荐指数
1
解决办法
241
查看次数

标签 统计

copytree ×5

python ×5

shutil ×4

ignore ×1

python-3.x ×1

wxpython ×1