当前位置:首页 » 编程语言 » python递归拷贝文件

python递归拷贝文件

发布时间: 2022-06-23 23:58:26

A. python里面shutil是什么

shutil 是高级的文件,文件夹压缩包处理模块。

1.shutil.fileobj(fsrc, fdst[, length])

将文件内容拷贝到另一个文件中

import shutil
shutil.fileobj(open('old.xml','r'), open('new.xml', 'w'))

2.shutil.file(src, dst)

拷贝文件

shutil.file('f1.log', 'f2.log')

3.shutil.mode(src, dst)

仅拷贝权限。内容、组、用户均不变

shutil.mode('f1.log', 'f2.log')

4.shutil.stat(src, dst)

仅拷贝状态的信息,包括:mode bits, atime, mtime, flags

shutil.stat('f1.log', 'f2.log')

5.shutil.(src, dst)

拷贝文件和权限

shutil.('f1.log', 'f2.log')

6.shutil.2(src, dst)

拷贝文件和状态信息

shutil.2('f1.log', 'f2.log')

7.shutil.ignore_patterns(*patterns)

shutil.tree(src, dst, symlinks=False, ignore=None)

递归的去拷贝文件夹

shutil.tree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
shutil.tree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))

8.shutil.rmtree(path[, ignore_errors[, onerror]])

递归的去删除文件

shutil.rmtree('folder1')

9.shutil.move(src, dst)

递归的去移动文件,它类似mv命令,其实就是重命名。

shutil.move('folder1', 'folder3')

10.shutil.make_archive(base_name, format,...)

创建压缩包并返回文件路径,例如:zip、tar

创建压缩包并返回文件路径,例如:zip、tar

  • base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
    如:www =>保存至当前路径
    如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/

  • format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”

  • root_dir: 要压缩的文件夹路径(默认当前目录)

  • owner: 用户,默认当前用户

  • group: 组,默认当前组

  • logger: 用于记录日志,通常是logging.Logger对象


B. python怎么把文件放进文件夹

模块shutil可以完成对文件的复制与删除操作:

#从源src复制到dst中去
file(src,dst)

示例1,文件拷贝:

importshutil

#将d盘下的123.txt文件复制到d盘下test目录中,并重命名为234.txt
shutil.file('d://123.txt','D://test//234.txt')

示例2,递归拷贝文件夹:

importshutil

#复制old_path中的目录到new_path

old_path='D://123'

new_path='d://test//123'

shutil.tree(old_path,new_path)

http://www.cnblogs.com/aslongas/p/6926000.html

C. 求通过python实现,在指定目录下遍历所有文件,将以.txt为后缀的文件移动到另一指定目录中

target_dir = 'home/' #假定要拷贝到home目录
x = [ item for item in os.walk('.') ] #os.walk递归地遍历所有子文件夹
#返回的是一个list,list中每一个元素由3个部分:(path, dirs, files)
for path, dirs, files in x:
for file in files:
if file.endswith('.txt'): #找到以txt结尾的,之
shutil.( path+os.sep+file , target_dir )

D. 小白有一个关于python递归的问题 求教

首先,os是标准库的一个模块,而非函数。
递归没有什么特殊的地方,只是调用一个函数。巧的是,这个函数就是自己而已。你可以想象“查找文件”这个函数有无数个备份,而每次递归遇到就随便哪来用一个,和普通的函数调用没有什么区别。
所以,返回父目录就是在查找文件函数执行完成后执行的。
把你的手掌伸直,五指分开,从手腕开始沿着肉的边缘走一圈,最终又会回到手腕起点(忽略宽度),哪怕你的手指上又长出若干个小手指,沿着边缘走一圈,总会回到手腕。这就是递归执行的过程,每个手指就是一个递归调用。你可以在纸上画一个树状结构,设置三层目录,按照函数的调用过程来理解。
或者可以这么理解,假如国家要进行人口普查,就可以让每个省把自己的人口普查的结果回报上来,然后加起来就可以了。那么国家在加的时候,必须要等所有省都普查完后才能进行加(相当于你的返回上级目录的操作)。对于每个省来说,类似的,只要让每个市进行人口普查,然后把结果相加即可。每个省也都要等到它的所有市都普查完毕后才能相加。同理,每个市对于每个县也是同样的操作。这就是递归的过程。——但需要注意的是,所有县的普查可以同时进行,但计算机递归却是一个完成后才能进行下一个。和画手指是一样的,必须一个手指画完后才能进行下一个。

E. python如何递归查找文件,我下面的代码是哪里出错了,怎么只能查找当前目录

判断isdir用的参数不对,应该是file_path,不应该是i
def listdir (path='.',name=None,dirlist=[]):
#example: arr=adihe.listdir('.') 将返回当前目录下的所有文件,不许含有空格
files=os.listdir(path.decode('utf-8'))
#获取目录
for i in files:
file_path=path+os.sep+i
if os.path.isdir(file_path):
dirlist.append(file_path)
listdir(file_path,name,dirlist)
return dirlist

可以使用os.walk()遍历所有文件,不用自己写递归函数。
#/bin/python
import os
for root in os.walk(r"d:\newtest"):
print root
print "\n

F. python 递归遍历文件夹

没有仔细看,但你的第一句就有错
def distinguish_file(user_paht):
参数应为user_path

G. python shutil模块函数file和的区别

shutil.file( src, dst) 从源src复制到dst中去。当然前提是目标地址是具备可写权限。抛出的异常信息为IOException. 如果当前的dst已存在的话就会被覆盖掉
shutil.move( src, dst) 移动文件或重命名
shutil.mode( src, dst) 只是会复制其权限其他的东西是不会被复制的
shutil.stat( src, dst) 复制权限、最后访问时间、最后修改时间
shutil.( src, dst) 复制一个文件到一个文件或一个目录
shutil.2( src, dst) 在上的基础上再复制文件最后访问时间与修改时间也复制过来了,类似于cp –p的东西
shutil.2( src, dst) 如果两个位置的文件系统是一样的话相当于是rename操作,只是改名;如果是不在相同的文件系统的话就是做move操作
shutil.tree( olddir, newdir, True/Flase)
把olddir拷贝一份newdir,如果第3个参数是True,则复制目录时将保持文件夹下的符号连接,如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接
shutil.rmtree( src ) 递归删除一个目录以及目录内的所有内容

H. python 代码递归及批量处理的问题

这段程序进行递归了 ,难道是我大眼一扫没看到 0.0

I. python 复制文件

报错多半是这句targetDir = targetDir+'/'+os.path.split(sourceDir)[1]

你这句把本来的targetDir覆盖了,导致后面的文件的目标文件夹被修改


发个我写的吧,参考下吧

defFile(sourceDir,targetDir):
ifnotos.path.exists(targetDir):
os.makedirs(targetDir)

forfilenameinos.listdir(sourceDir):
path=os.path.join(sourceDir,filename)
ifos.path.isdir(path):
targetSubDir=os.path.join(targetDir,filename)
File(path,targetSubDir)
else:
targetPath=os.path.join(targetDir,filename)
open(targetPath,'wb').write(open(path,'rb').read())

J. python中怎样将文件拷贝到指定的目录下

代码:

import os
import shutil
from shutil import Error
from shutil import stat
from shutil import 2
src = "" #需要复制的文件目录
dst = "" #目标目录
def jiecptree(src, dst, symlinks=False, ignore=None): #声明函数 ree( 要复制的目录,目标目录,复制符号连接内容到新目录,没有要忽略文件)
names = os.listdir(src) #获得要复制目录的文件名列表,赋给变量 names
if ignore is not None: #如果 ignore 不是None值
ignored_names = ignore(src, names) # src目录中要忽略文件的名字赋给 ignored_names
else: # 否则
ignored_names = set() #ignore_name 被 不重复空元素集 赋值
if os.path.isdir(dst):
pass
else:
os.makedirs(dst)
# print"dstfirst:"+dst
errors = [] #声明 errors列
for name in names: #将names里的元素循环复制给name
if name in ignored_names: #如果name在要求被忽略的列里出现
continue #继续for循环(跳回for,从新循环下个元素)
srcname = os.path.join(src, name) #将路径名(src)添加到文名(name)之前然后赋值给 srcname
dstname = os.path.join(dst, name) #将路径名(dst)添加到文名(name)之前然后赋值给 dstcname
from shutil import Error
# print "name:"+name
# print "src:"+src
# print "dst:"+dst
try: #尝试
if os.path.islink(srcname):
continue
elif os.path.isdir(srcname): #如果srcname路径是存在
jiecptree(srcname, dstname, symlinks, ignore)
elif os.path.isdir(dstname):
os.remove(dstname)
2(srcname, dstname)
else: # 否则
2(srcname, dstname) # 复制srcname到dstname
# print "srcname:"+srcname
# print "dstname:"+dstname
# XXX What about devices, sockets etc.? #怎样装置
except (IOError, os.error), why: #除(IOError[与文件有关的异常],操作系统异常)外,返回原因
errors.append((srcname, dstname, str(why))) # 向errors列里添加,(要复制的目录,目标目录,错误原因)
# catch the Error from the recursive jiecptree so that we can 从递归复制中捕捉这个错误,以便于我们能继续复制其他文件
# continue with other files
except Error, err: #除错误外,返回错误:
errors.extend(err.args[0]) #扩展 errors 列,添加(err.args[0] 元素)
try: #尝试
stat(src, dst) # 从src复制权限位,上次访问时间,最后修改时间 到 dst,
except WindowsError: # 除 Windows错误 外:
# can't file access times on Windows 在Windows上无法复制文件访问时间
pass # 通过(不作任何处理)
except OSError, why: # 除 操作系统错误 外,返回原因:
errors.extend((src, dst, str(why))) #扩展 errors 列,添加(要复制的目录,目标目录,错误原因)
if errors: # 如果错误
raise Error(errors) # 提示错误

更多相关内容可参考资料http://www.viiboo.cn

热点内容
算法牛人左 发布:2025-02-05 15:31:02 浏览:438
php筛选功能 发布:2025-02-05 15:29:09 浏览:165
ip匹配服务器 发布:2025-02-05 15:10:35 浏览:909
php语法后 发布:2025-02-05 15:10:34 浏览:59
oppor9s怎么压缩文件 发布:2025-02-05 15:00:34 浏览:639
苹果耳塞怎么改安卓也能用 发布:2025-02-05 14:50:54 浏览:558
安卓如何鉴别手机真假 发布:2025-02-05 14:28:15 浏览:121
ffmpeglinux编译 发布:2025-02-05 14:28:04 浏览:545
服务器如何做界面 发布:2025-02-05 14:27:23 浏览:291
访问学者单位推荐意见 发布:2025-02-05 14:13:05 浏览:853