Python 裡的拷貝

2022-07-20 18:00:18 字數 4756 閱讀 7400

深拷貝deepcopy與淺拷貝copy

1.   copy.copy 淺拷貝 只拷貝父物件,不會拷貝物件的內部的子物件。

2. copy.deepcopy 深拷貝 拷貝物件及其子物件

乙個很好的例子:

也在裡看到的好帖,覺得好就移過來了,學習學習。。。

1. os.system

python code

import

osimport

tempfile

filename1

=tempfile.mktemp (

".txt

") #產生臨時檔案或目錄,tempfile.mktemp(suffix='',prefix='tmp',dir=none)

產生的檔名或目錄,預設就是函式裡的引數。

open (filename1, "w

").close ()

filename2

=filename1 +"

.copy

"print

filename1,

"=>

", filename2

#拷檔案

os.system (

"copy %s %s"%

(filename1, filename2))

ifos.path.isfile (filename2):

print

"success

"dirname1

=tempfile.mktemp (

".dir")

os.mkdir (dirname1)

dirname2

=dirname1 +"

.copy

"print

dirname1,

"=>

", dirname2

#拷目錄

os.system (

"xcopy /s %s %s"%

(dirname1, dirname2)) #dos下,拷貝目錄命令xcopy

ifos.path.isdir (dirname2):

print

"success

"2. shutil.copy和shutil.copytree

python code

import

osimport

shutil

import

tempfile

filename1

=tempfile.mktemp (

".txt")

open (filename1, "w

").close ()

filename2

=filename1 +"

.copy

"print

filename1,

"=>

", filename2

#拷檔案

shutil.copy (filename1, filename2)

ifos.path.isfile (filename2):

print

"success

"dirname1

=tempfile.mktemp (

".dir")

os.mkdir (dirname1)

dirname2

=dirname1 +"

.copy

"print

dirname1,

"=>

", dirname2

#拷目錄

shutil.copytree (dirname1, dirname2)

ifos.path.isdir (dirname2):

print

"success

"3. win32file.copyfile

python code

import

osimport

win32file

import

tempfile

filename1

=tempfile.mktemp (

".txt")

open (filename1, "w

").close ()

filename2

=filename1 +"

.copy

"print

filename1,

"=>

", filename2

#拷檔案

#檔案已存在時,1為不覆蓋,0為覆蓋

win32file.copyfile (filename1, filename2, 1)

win32file.copyfile (filename1, filename2, 0)

win32file.copyfile (filename1, filename2, 1)

ifos.path.isfile (filename2):

print

"success

"dirname1

=tempfile.mktemp (

".dir")

os.mkdir (dirname1)

dirname2

=dirname1 +"

.copy

"print

dirname1,

"=>

", dirname2

#拷目錄

win32file.copyfile (dirname1, dirname2, 1)

ifos.path.isdir (dirname2):

print

"success

"4. shfileoperation

python code

import

osfrom

win32com.shell

import

shell, shellcon

import

tempfile

filename1

=tempfile.mktemp (

".txt")

open (filename1, "w

").close ()

filename2

=filename1 +"

.copy

"print

filename1,

"=>

", filename2

#拷檔案

#檔案已存在時,shellcon.fof_renameoncollision會指示重新命名檔案

shell.shfileoperation (

(0, shellcon.fo_copy, filename1, filename2, 0, none, none)

)shell.shfileoperation (

(0, shellcon.fo_copy, filename1, filename2, shellcon.fof_renameoncollision, none, none)

)shell.shfileoperation (

(0, shellcon.fo_copy, filename1, filename2, 0, none, none))if

os.path.isfile (filename2):

print

"success

"dirname1

=tempfile.mktemp (

".dir")

os.mkdir (dirname1)

dirname2

=dirname1 +"

.copy

"print

dirname1,

"=>

", dirname2

#拷目錄

shell.shfileoperation (

(0, shellcon.fo_copy, dirname1, dirname2, 0, none, none))if

os.path.isdir (dirname2):

print

"success

"測試結果出來了: 測試環境:系統——win7 rtm,cpu——p4 3.0,mem——1.5g ddr400,u盤——kingston 4g

用4種不同的方法從硬碟拷貝msdn 2008 sp1(2.37g)到u盤:

os system 的方法耗時903.218秒 shutil 的方法耗時1850.634秒 win32file 的方法耗時861.438秒 shfileoperation的方法耗時794.023秒

另外shfileoperation是顯示對話方塊的,可以這樣用

shfileoperation能操作網路上的檔案 如果你想將本地檔案複製到192.168.1.99 那麼只要在192.168.1.99上共享123目錄 然後將pto設定為 就可以了 但不要設定為

python code

shell.shfileoperation (

(0, shellcon.fo_copy, filename1, filename2,

shellcon.fof_renameoncollision 

|

\ shellcon.fof_noconfirmation 

|\

shellcon.fof_noerrorui 

|\

shellcon.fof_silent, none, none))

js裡的深拷貝和淺拷貝

引用資料型別 名在棧中,值在堆記憶體中 淺拷貝 拷貝的是引用位址,並非堆裡面的值 深拷貝 複製所有層級屬性 深拷貝實現方法 三種 1 遞迴複製所有層級屬性 2 借用json物件的parse和stringify 3 jq的extend方法 陣列的slice 和concat 方法不是真正的深拷貝,只能把...

園子裡拷貝的學習方法

寫的很好,複製下來,結合自己實際情況學習 工作後突然感覺好多東西不會,開始看一些業界推薦的好書,一年後開始在csdn上回答問題,答了半年在上寫部落格,中間的各種經歷上面也提到 過,學了很多亂七八糟的東西,最近一年找到了自己的興趣所在 前端,看了 j ascript高階程式設計 css權威指南 還有上...

python淺拷貝 Python中的淺拷貝和深拷貝

在python中,賦值語句不複製物件,它們只是在目標和物件之間建立繫結。當我們使用 運算子時,使用者認為這會建立乙個新物件 好吧,其實並沒有。它只建立乙個共享原始物件引用的新變數。有時使用者想要使用可變物件,為了做到這一點,使用者希望找到建立這些物件的 真實副本 或 轉殖 的方法。或者,有時使用者想...