导航:首页 > 文件目录 > python拷贝文件内容

python拷贝文件内容

发布时间:2023-03-31 17:37:41

① python的深拷贝和浅拷贝

1.什么是深拷贝?什么是浅拷贝?(深拷贝与浅拷贝的区别)
简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,
如果B没变,那就是深拷贝,自食其力。
也可以这么说: 浅拷贝没有拷贝子对象,所以原始数据改变,子对象会改变;深拷贝,包含对象里面的子对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变

(1)父对象是可变对象拷贝,只拷贝父对象的的值,不会对其子对象的值进行拷贝而是拷贝的子对象的索引,然后创建一个新的对象(ID地址不一样),如果子对象是可变对象,依然是可以修改的。
(2)父对象是不可变对象的拷贝,就闷首袭是对另外一个变量的内存地址的拷贝(ID地址一样)或者蚂兄说对象引用。

import
a1=[1,2]
a2=[3,4]
a=[a1,a2]
b=.(a)#浅拷贝
c=.deep(a)#深拷贝
print(id(a)) #140414167869960
print(id(b)) #140414167869896
print(id(c)) #140414167869832
print(id(a[0])) # 140414167868488
print(id(b[0])) #140414167868488
print(id(c[0])) #140414167869768

"""

"""
import
a1=(1,2)
a2=(3,4)
a=(a1,a2)
b=.(a)
c=.deep(a)
print(id(a)) #140648248055496
print(id(b)) #140648248055496
print(id(c)) #140648248055496
print(id(a[0])) #140648248055944
print(id(b[0])) #140648248055944
print(id(c[0])) #140648248055944

""芹段"

② Python对象的拷贝

Python赋值操作或函数参数传递,传递的永远是对象引用(即内存地址),而不是对象内容。在Python中一切皆对象,对象又分为可变(mutable)和不可变(immutable)两种类型。对象拷贝是指在内存中创建新的对象,产生新的内存地址。当顶层对象和它的子元素对象全都是immutable不可变对象时,不存在被拷贝,因为没有产生新对象。浅拷贝(Shallow Copy),拷贝顶层对象,但不会拷贝内部的子元素对象。深拷贝(Deep Copy),递归拷贝顶层对象,以及它内部的子元素对象。

Python中一切皆对象,对象就像一个塑料盒子, 里面装的是数据。对象有不同类型,例如布尔型和整型,类型决定了可以对它进行的操作。现实生活中的"陶器"会暗含一些信息(例如它可能很重且易碎,注意不要掉到地上)。

对象的类型还决定了它装着的数据是允许被修改的变量(可变的mutable)还是不可被修改的常量(不可变的immutable)。你可以把不可变对象想象成一个透明但封闭的盒子:你可以看到里面装的数据,但是无法改变它。类似地,可变对象就像一个开着口的盒子,你不仅可以看到里困困面的数据,还可以拿出来修改它,但你无法改变这个盒子本身,即你无法改变对象的类型。

对象拷贝是指在内存中创建新的对象,产生新的内存地址。

浅拷贝(Shallow Copy),拷贝顶层对象,但不会拷贝内部的子元素对象。
2.1.1. 顶层是mutable,子元素全是immutable
当顶层对象是mutable可变对象,但是它的子元素对象全都是immutable不可变对象时,如[1, 'world', 2]

① 创建列表对象并赋值给变量a

② 导入模块,使用.()函数浅拷贝a,并赋值给变量b

③ 修改变量a的子元素a[0] = 3,由于整数是耐汪不可变对象,所以并不是修改1变为3,而是更改a[0]指向对象3

当顶层对象是 mutable可变对象 ,但子元素也存在 mutable可变对象 时,如 [1, 2, ['hello','world']]

① 浅拷贝 .() 只拷贝了顶层对象,没有拷贝子元素对象['hello','world'],即a[2]和b[2]指向同一个列表对象

② 修改a[2][1] = 'china',则b[2][1] = 'china'

当顶层对象是immutable不可变对象,同时它的子元素对象也全都是immutable不可变对象时,如(1, 2, 3)

变量a与变量b指向的是同一个元组对象,没有拷贝

当顶层对象是immutable不可变对象时,但子元素存在mutable可变对象时,如(1, 2, ['hello','world'])

变量a与变量b指向的是相同的元组对象,并且a[2]与b[2]指向同一个列表,所以修改a[2][1]会影响b[2][1]

深拷贝(Deep Copy),递归拷贝顶层对象,以及它内部的子元素对象

当顶层对象是mutable可变对象,但是它的子元素对象全都是immutable不可变对象时,如[1, 'world', 2]

变量a与变量b指向不同的列表对象,修改a[0]只是将列表a的第一个元素重新指向新对象,不会影响b[0]

当顶层对象是mutable可变对象,但昌尺仔子元素也存在mutable可变对象时,如[1, 2, ['hello','world']]

深拷贝既拷贝了顶层对象,又递归拷贝了子元素对象,所以a[2]与b[2]指向了两个不同的列表对象(但是列表对象的子元素初始指定的字符串对象一样),修改a[2][1] = 'china'后,它重新指向了新的字符串对象(内存地址为140531581905808),不会影响到b[2][1]

当顶层对象是immutable不可变对象,同时它的子元素对象也全都是immutable不可变对象时,如(1, 2, 3)

变量a与变量b指向的是同一个元组对象,不存在拷贝

当顶层对象是immutable不可变对象时,但子元素存在mutable可变对象时,如(1, 2, ['hello','world'])

变量a与变量b指向的是不同的元组对象,同时a[2]与b[2]指向不同的列表对象,所以修改a[2][1]不会影响b[2][1]

使用=是赋值,即将列表对象的引用也赋值给变量b,可以将列表对象想像成一个盒子,变量a相当于这个盒子上的标签,执行b = a后,相当于再在这个盒子上贴上b标签,a和b实际上指向的是同一个对象。因此,无论我们是通过a还是通过b来修改列表的内容,其结果都会作用于双方。

b/c/d都是a的复制,它们都指向了不同的列表对象,但是没有拷贝子元素,a[2]和b[2]/c[2]/d[2]指向同一个列表, 相当于浅拷贝的效果

使用分片[:]操作,a和b其实是指向同一个元组,而且没有拷贝子元素,a[2]和b[2]也指向同一个列表,相当于浅拷贝的效果

同列表类似,可以使用字典的()函数或者转换函数dict()

变量a与变量b/c指向不同的字典,但是没有拷贝子元素,a['jobs']和b['jobs']/c['jobs']指定同一个列表, 相当于浅拷贝的效果

同列表类似,可以使用集合的()函数或者转换函数set()

变量a与变量b/c指向不同的集合,而集合的元素必须是hashable,所以修改集合a不会影响到b/c

③ 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())

④ Python带格式拷贝excel表格(从A拷贝到B)

使用openpyxl包  从表A.xlsx 完全拷贝数据到表B.xlsx   openpyxl这个包不支持xls格式的excel文件

如果A.xlsx中的数据有用到公式自动求和的,在读取A.xlsx中的的数据的时候 需要

load_workbook(A.xlsx,data_only=True)这样加第二个参数  只读取数据否则读出来的就是公式.

下面是重点如果A.xlsx中的表格带有填充颜色 合并单元格字体格式  等等需要如下这样做

myfile = A.xlsx

targFile = B.xlsx

wb = load_workbook(myfile,data_only=True)._sheets #原要拷贝单元格

wb2 = load_workbook(targFile) # 目标单元格

 wr = wb[index]

 ws = wb2._sheets[1]

 # 两个for循环遍历整个excel的单元格内容

for i, row in enumerate(wr.iter_rows()):

      for j, cell in enumerate(row):

               ws.cell(row=i + 1, column=j + 1, value= cell.value) #拷贝数值

               ws.cell(row=i + 1, column=j + 1).number_format=cell.number_format #拷数字格式

               ws.cell(row=i + 1, column=j + 1).alignment = .(cell.alignment) #

               ws.cell(row=i + 1, column=j + 1).font = .(cell.font) #拷贝字体

               ws.cell(row=i + 1, column=j + 1).border = .(cell.border) #拷贝值

              ws.cell(row=i + 1, column=j + 1).fill = .(cell.fill) #拷贝填充颜色答慎行

for merg in wr.merged_cells:

         ws.merge_cells(str(merg)) #合并单元格   

wb2.save(targFile)

这样数据就能完美的从从A拷贝到B啦.格式样式完全一样.

但是 也有两个我没有攻克的问题 在这孝卖里说一下吧 希望有大佬能解决并告知在下 ,不胜感激

问题一 从表A中拷贝数据到表B以后 如果表B里面也设置了对数据的公式计算,这个时候 如果不打开表B,直接再把表B里面求和的数据 拷贝到表C的话  数值是拷贝不过去的.打开表C会发现没有数值,我查了一些资料 好像是说 表B里面的数 如果是像上面这样拷贝过去然后通过公式直接计算的值 没有保存上.   所以  要想把数值拷贝到C或者读出来的话 ,需要手动打开表B然后,关闭的时候保存一下才可以.这是问题一.   因为清哗我遇到了一个这样的需求,需要连续拷贝从A拷到B,再把B里面求和的数据拷到C.希望有大佬能够指点一下

问题二就比较神奇了

我把表A里面的数据拆分拷贝到了另外五个汇总的表格里面,这五个其中有一个打开以后会报错,显示 excel文件格式错误.这五个表格在拷贝数据以前就已经存在了,那个时候打开都是没有问题的,只有在拷贝完数据以后会报错,我也不清楚具体的原因. 查了一些资料以后知道,excel表格其实是一种特殊的压缩包,只要把后缀改成zip就可以打开这个压缩文件,然后我找到报错的那个文件,然后用这个报错的文件和正常的文件里面这个去做了对比,发现莫名其妙的多了一些东西,删除掉以后再打开就正常了. 这也是我没有解决的问题,希望有大佬能够指点一二 具体的报错 截图 就是文章中附带的截图

⑤ python 中如何实现对文件的复制、粘贴

用shutil模块
#!/usr/bin/env python
#-*- coding: utf-8 -*-

import os
import os.path
from shutil import

dest_dir = ur'd:\新建文件专夹属'
if not os.path.isdir(dest_dir):
os.makedirs(dest_dir)

file_path = ur'c:\123\1.txt'
(file_path, dest_dir)

⑥ Python复制文件命令合集

python的shutil模块提供了便捷的复制文件命令

shutil.(srcfile,dstfile)  #拷贝文件,目标文件必须存在,否则就会报错

shutil.file(srcfile,dstfile)  #拷贝文件,目标 文件无需巧芦凳存在

shutil.tree(srcdir,dstdir)    #srcdir为源目录,dstdir为目标目录,复制时,如果dstdir已经存在时,会报FileExistsError错误,提示“当文件已存在时,无法创建该文件”

shutil.mode(src, dst)     # 仅拷贝权限。内孝旅容、组、用户均不变,目标文件哗昌必须存在

⑦ 如何用python复制文件和文件夹

这个方法不能把物备文件夹复制到文件夹里面去。

10.shutil.tree('E:\test\good', 'E:\test\vivi')

tree不能把文件夹复制唤蚂到已存在的文件夹里面去。

11.shutil.tree('E:\test\good', 'E:\test\new folder')

只罩链毁能复制到新创建的文件夹里面。

有相同名字的文件,就会出错,注意修改文件名。

⑧ python复制excel文件

# -*- coding: utf-8 -*-
import xlrd
import shutil
import os
def read_excel():
# 打开文件
workbook = xlrd.open_workbook(r'C:\Users\xxx\Desktop\xxx.xls')
# 获取所有sheet
print (workbook.sheet_names()) # [u'sheet1', u'sheet2']
#获取sheet
sheet= workbook.sheet_names()[0]
sheet_data=workbook.sheet_by_name(sheet)
print(sheet_data)
# sheet的名称,行数,列数
print (sheet_data.name,sheet_data.nrows,sheet_data.ncols)
rows = sheet_data.row_values(0) # 获取第四行内容
cols = sheet_data.col_values(2) # 获取第三列内容
print (rows)
for i,j in enumerate(rows):
print(i,':',j)

for i in range(sheet_data.nrows):
strr=sheet_data.row_values(i)[5][:5]
if(strr == 'AXIAL'):
dicom_path=sheet_data.row_values(i)[15]
row_path=sheet_data.row_values(i)[16]
print(row_path)
roww=row_path.split('\\',3)[3]
print(roww)
#row_path='C:\Users\xxx\Desktop\xxx'
path_now=os.path.join('\\\\xxx',roww)
print(path_now)
shutil.tree(path_now,r'C:\Users\xxx\Desktop\Get')
#shutil.tree(row_path,r'C:\Users\xxx\Desktop')
break

if __name__ == '__main__':
read_excel()

#文件复制主要利用shutil包,tree的第一个参数为需要复制的文件夹,第二个参数为目标位置;但第二个参数的目标位置必须不存在,否则会报错。

⑨ python直接安装后的文件夹能使用吗

python直接安装后的文件夹不能使用。如果是直接拷贝.py脚本文件到其他没装python的电脑上是不能运行的,如果想把编写的脚本在其他电脑上洞伏亏直接双击运行,可纳神以去下载pyinstaller库,windows可直接pipinstallpyinstaller安装,然后在打开命令行,cd到脚本文件的目录或者在脚本文件的目录打开cmd,然后输入pyinstallerF加上脚本文件名(记得加上文件后缀)厅拍。

⑩ Python的shutil模块中文件的复制操作

shutil.file(src, dst):将名为src的文件的内容复制到名为dst的文件中 。

src, dst是文件名

shutil.(source, destination)
shutil.() 函数实现文件复制功能,将 source 文件复制游睁到 destination 文件夹中,两个参数滚磨指都是字符串格式。如果 destination 是一大配个文件名称,那么它会被用来当作复制后的文件名称,即等于 复制 + 重命名。

source一定是文件名,destination可以是文件名也可以是文件夹名

举例如下:

shutil 模块

阅读全文

与python拷贝文件内容相关的资料

热点内容
课后记忆电影女主角名字 浏览:881
plc编程为什么看书比看视频好 浏览:438
欧洲胸大妹子电影 浏览:597
无广告视频网站 浏览:610
docker镜像文件内容修改 浏览:585
指纹解锁的程序加密 浏览:558
男老师韩国 浏览:800
0xfcf0b87d 浏览:781
真实里面的女演员表 浏览:95
在附近可以看电影英译 浏览:944
老电影抗战老电 浏览:187
询价文件有哪些 浏览:298
国际影视网站推荐 浏览:165
使命召唤12版本号 浏览:342
公交车gps大数据分析 浏览:889
iphone5港版美版区别 浏览:831
韩国姜恩惠演过哪些电影 浏览:281
关于音乐的电影有哪些法国 浏览:927
游戏中的网络编程 浏览:238
三姐妹的诊所韩国电影 浏览:42

友情链接