2014-08-27 29 views
0

所以我有一個python程序,寫入素數到csv文件。我現在希望我的python文件在運行所有內容後創建它自己的副本,作爲我對原始文件進行調整時的備份。如何在執行計算後使用shutil將python文件複製到自己?

到目前爲止,我已經不知道這一點了,通過讓python程序創建一個新的.py文件,然後在其中寫入所有內容,但這是非常低效的。我希望它更簡潔,更簡單。

我聽說過使用shutil.copyfile一點點,但我不太確定如何使用它。 shutil.copyfile是讓我的python文件自己複製的最好方法,還是有更好的方法?

+1

看看'Git' http://en.wikipedia.org/wiki/Git_%28software%29 – Vor 2014-08-27 16:25:44

+0

你試過'shutil.copy(__ FILE__ ,「destination.py」)? – 2014-08-27 16:26:41

+0

不要讓你的程序複製自己。正如@Vor建議的那樣,使用真正的備份策略,甚至更好的是像Git這樣的版本控制系統。 – 2014-08-27 16:38:00

回答

1

版本控制軟件是爲了解決這個問題,也就是保留舊文件的副本。這樣做會讓你的源文件夾變得非常混亂。 Mercurial/Hg是really easy to learn並使用(它也是用python編寫的)。

否則回答這樣的問題:

shutil.copy(__file__, "new_destination.py") 
+0

你不需要abspath,但更大的問題是'__file__'可能是.pyc文件。您將需要修剪以獲得.py文件。 – tdelaney 2014-08-27 16:43:18

+0

@tdelaney取決於你當前的工作目錄。如果您位於文件所在的路徑內,則它只會返回到.py文件的相對路徑。請參閱http://stackoverflow.com/questions/7116889/python-file-attribute-absolute-or-relative – 2014-08-27 16:47:28

+0

@Thimble - 你是正確的,文件名並不總是絕對的。但是你不需要絕對文件名來複制文件。 – tdelaney 2014-08-27 16:56:33

相關問題