pythonshutilcopy
① python shutil.什么意思
使用这个方法123456789import shutil, errno def anything(src, dst): try: shutil.tree(src, dst) except OSError as exc: # python >2.5 if exc.errno == errno.ENOTDIR: shutil.(src, dst) else: raise
② python 实现一级目录下的所有文件与文件夹到指定目录
'''
python3 实现
将a目录下所有文件和文件夹到b目录
'''
import os, shutil
#src 原始目录, des 目标目录
def sourcecpy(src, des):
src = os.path.normpath(src)
des = os.path.normpath(des)
if not os.path.exists(src) or not os.path.exists(src):
print("文件路径不存在")
sys.exit(1)
#获得原始目录中所有的文件,并拼接每个文件的绝对路径
os.chdir(src)
src_file = [os.path.join(src, file) for file in os.listdir()]
for source in src_file:
#若是文件
if os.path.isfile(source):
shutil.(source, des) #第一个参数是文件,第二个参数目录
#若是目录
if os.path.isdir(source):
p, src_name = os.path.split(source)
des = os.path.join(des, src_name)
shutil.tree(source, des) #第一个参数是目录,第二个参数也是目录
③ python 中如何实现对文件的复制、粘贴
file类中没有提供专门的文件复制函数,因此只能通过使用文件的读写函数来实现文件的复制。这里仅仅给出范例:
src = file("myfile.txt", "w+")
temp = ["hello world! \n"]
src.writelines(temp)
src.close()
src = file("myfile.txt", "r+")
des = file("myfile2.txt", "w+")
des.writelines(src.read())
src.close()
des.close()
shutil模块是另一个文件,目录的管理接口,提供了一些用于复制文件,目录的函数。file()函数可以实现文件的拷贝,声明如下:
file(src, des)
文件的剪切可以使用move()函数模拟,声明如下:
move(src,des)
功能:移动一个文件或者目录到指定的位置,并且可以根据参数des重命名移动后的文件。
④ 用python如何将文件夹内部分指定文件名的文件复制到目标文件夹,大佬求教!
import glob
import shutil
def _file(names,old_name,new_name):
for name in names:
filename = name.split("\\")[-1]
#filename:从路径中截取文件名
shutil.file(old_name + filename, new_name + filename)
files = glob.glob(r'D:/A/1*.txt')
#files : 搜索得到的符合条件(带有1开头的txt)的文件列表
old_path = r'D:/A/'
new_path = r'D:/B/'
_file(files,old_path,new_path)
⑤ 如何用python复制粘贴文件到指定文件夹,windows
import
shutil
#复制文件
shutil.file('listfile.py',
'd:/test.py')
#复制目录
shutil.tree('d:/temp',
'c:/temp/')
#其余可以参考shutil下的函数
⑥ python 怎么将输入目录内的文件拷贝至另一个目录的同名文件夹
这是最近写的一个类似代码,你拿去改改
import shutil
import os
import logging
import sys
logger = logging.getLogger(__name__)
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
def cp_or_mv2(src_file, des_dir, is_):
print(src_file, des_dir)
if os.path.isfile(src_file):
logger.info(f'from file {src_file}')
if is_:
shutil.2(src_file, des_dir)
logger.info(f' to {des_dir}')
else:
des_file = os.path.join(des_dir, src_file)
shutil.move(src_file, des_file)
logger.info(f'move to {des_file}')
else:
logger.info(f'from dir {src_file}')
des_dir_level1 = os.path.join(des_dir, src_file)
shutil.tree(src_file, des_dir_level1, dirs_exist_ok=True)
logger.info(f'to {des_dir_level1}')
if not is_:
shutil.rmtree(src_file)
logger.info(f'deleted {src_file}')
def process_files_in_txt(txt_file, src_dir, des_dir, is_=True):
os.chdir(src_dir)
with open(txt_file, 'r', encoding='utf8', errors='ignore') as f:
for line in f.readlines():
src_file = line.strip()
# logger.info(src_file)
if os.path.exists(src_file):
cp_or_mv2(src_file, des_dir, is_)
else:
logger.warning(f'{src_file} missing!')
if __name__ == '__main__':
process_files_in_txt(r"D:\D\需要拷贝.txt", # 哪些文件(夹)
r"D:\D\Desktop", # 从哪个文件夹
r"D:\D\新建文件夹", # 到哪个文件夹
is_=False) # True复制,False剪切
⑦ 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 ) 递归删除一个目录以及目录内的所有内容
⑧ 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对象
⑨ 如何使用python复制大概200G的数据[任何语言只要能实现]
如果我理解的正确的话,楼主是要大文件吧。
python最经常使用的函数,应该是shutil.file()了,它默认以16384bytes 的大小作为缓冲区,对于小的文件,的确不错。但是处理到大的文件的时候,性能下降就很严重。过小的buffer会不合适。
经过多次的尝试,发现10Mb的buffer最合适,再高也没有性能的提升。重载后的函数如下
defFile(src,dst,buffer_size=10485760,perserveFileDate=True):
'''
Copiesafiletoanewlocation.
@paramsrc:SourceFile
@paramdst:DestinationFile(notfilepath)
@parambuffer_size:Buffersizetousering
@paramperserveFileDate:Preservetheoriginalfiledate
'''
#.Ifitdoesn'tcreatethedirectory
dstParent,dstFileName=os.path.split(dst)
if(not(os.path.exists(dstParent))):
os.makedirs(dstParent)#
buffer_size=min(buffer_size,os.path.getsize(src))
if(buffer_size==0):
buffer_size=1024ifshutil._samefile(src,dst):
raiseshutil.Error("`%s`and`%s`arethesamefile"%(src,dst))
forfnin[src,dst]:
try:
st=os.stat(fn)
exceptOSError:
#Filemostlikelydoesnotexist
pass
else:
#XXXWhataboutotherspecialfiles?(sockets,devices...)
ifshutil.stat.S_ISFIFO(st.st_mode):
raiseshutil.SpecialFileError("`%s`isanamedpipe"%fn)
withopen(src,'rb')asfsrc:
withopen(dst,'wb')asfdst:
shutil.fileobj(fsrc,fdst,buffer_size)if(perserveFileDate):
shutil.stat(src,dst)
使用的时候记得添加相应的包。
⑩ Python shutil.问题 为什么无法传值
shutil.file( src, dst) 从源src复制到dst中去。当然前提是目标地址是具备可写权限。抛出的异常信息为IOException. 如果当前的dst已存在的话就会被覆盖掉
shutil.move( src, dst) 移动文件或重命名
shutil.mode( src, dst) 只是会复制其权限其他的东西是不会被复制的
shutil.stat( src, dst) 复制权限、最后访问时间、最后修改时间
shutil.( src, dst) 复制一个文件到一个文件或一个目录!