深拷貝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
filename1,
"=>
", filename2
#拷檔案
os.system (
"copy %s %s"%
(filename1, filename2))
ifos.path.isfile (filename2):
"success
"dirname1
=tempfile.mktemp (
".dir")
os.mkdir (dirname1)
dirname2
=dirname1 +"
.copy
dirname1,
"=>
", dirname2
#拷目錄
os.system (
"xcopy /s %s %s"%
(dirname1, dirname2)) #dos下,拷貝目錄命令xcopy
ifos.path.isdir (dirname2):
"success
"2. shutil.copy和shutil.copytree
python code
import
osimport
shutil
import
tempfile
filename1
=tempfile.mktemp (
".txt")
open (filename1, "w
").close ()
filename2
=filename1 +"
.copy
filename1,
"=>
", filename2
#拷檔案
shutil.copy (filename1, filename2)
ifos.path.isfile (filename2):
"success
"dirname1
=tempfile.mktemp (
".dir")
os.mkdir (dirname1)
dirname2
=dirname1 +"
.copy
dirname1,
"=>
", dirname2
#拷目錄
shutil.copytree (dirname1, dirname2)
ifos.path.isdir (dirname2):
"success
"3. win32file.copyfile
python code
import
osimport
win32file
import
tempfile
filename1
=tempfile.mktemp (
".txt")
open (filename1, "w
").close ()
filename2
=filename1 +"
.copy
filename1,
"=>
", filename2
#拷檔案
#檔案已存在時,1為不覆蓋,0為覆蓋
win32file.copyfile (filename1, filename2, 1)
win32file.copyfile (filename1, filename2, 0)
win32file.copyfile (filename1, filename2, 1)
ifos.path.isfile (filename2):
"success
"dirname1
=tempfile.mktemp (
".dir")
os.mkdir (dirname1)
dirname2
=dirname1 +"
.copy
dirname1,
"=>
", dirname2
#拷目錄
win32file.copyfile (dirname1, dirname2, 1)
ifos.path.isdir (dirname2):
"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
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):
"success
"dirname1
=tempfile.mktemp (
".dir")
os.mkdir (dirname1)
dirname2
=dirname1 +"
.copy
dirname1,
"=>
", dirname2
#拷目錄
shell.shfileoperation (
(0, shellcon.fo_copy, dirname1, dirname2, 0, none, none))if
os.path.isdir (dirname2):
"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中,賦值語句不複製物件,它們只是在目標和物件之間建立繫結。當我們使用 運算子時,使用者認為這會建立乙個新物件 好吧,其實並沒有。它只建立乙個共享原始物件引用的新變數。有時使用者想要使用可變物件,為了做到這一點,使用者希望找到建立這些物件的 真實副本 或 轉殖 的方法。或者,有時使用者想...