我做了一個小應用程序,基本上在某些時候我調用distutils.dir_util.copy_tree將文件複製到目的地。有沒有人幫我一個基本的進度條鏈接,如:Python,如何將進度條鏈接到distutils.dir_util.copy_tree
[======]50%
在複製過程...不幸的是,我不能猜我渴望它會採取複製文件夾樹,因爲它的會是不時有所不同。 在此先感謝任何會回答我的人。
我做了一個小應用程序,基本上在某些時候我調用distutils.dir_util.copy_tree將文件複製到目的地。有沒有人幫我一個基本的進度條鏈接,如:Python,如何將進度條鏈接到distutils.dir_util.copy_tree
[======]50%
在複製過程...不幸的是,我不能猜我渴望它會採取複製文件夾樹,因爲它的會是不時有所不同。 在此先感謝任何會回答我的人。
distutils.dir_util.copy_tree()
不提供可用於此的回調。您需要使用os.walk()
來枚舉文件系統對象,然後使用shutil.copy[2]()
複製實際對象。
科瑞Glodberg寫了一個簡單的LIB做的命令行aplications ASCII進度欄,也許你會覺得很有意思:
http://coreygoldberg.blogspot.com.es/2010/01/python-command-line-progress-bar-with.html
好的謝謝,但這並不適用於Windows。 – nassio 2012-04-10 18:58:43
如Python的文檔說明,你可以提供一個回調shutil .copytree。
from shutil import copytree
def _countFiles(path, names):
#do someting with "path" and "names"
return [] # nothing will be ignored
copytree(source, destination, ignore=_countFiles)
我不寫代碼來獲得進步,但你明白了吧:
問候
這是不正確的。 Python文檔明確指出,忽略可調用被複制的每個(子)目錄調用一次,將目錄和文件列表傳遞給可調用對象。這不提供進度機制,因爲它每個目錄調用一次,而不是每個文件。假設你在一個目錄中有10,000個文件。該忽略會被調用一次,以查看哪些文件要忽略,並且再也不會,從而不能跟蹤進度。 – user1610729 2014-12-09 22:44:15
這是一個很好的觀點。至少你有進步的目錄:) – Samoht 2015-03-20 14:35:49
感謝Ignacio,我想我可以在distutils.dir_util.copy_tree()'foor loop'裏面加入一個簡單的進度條......這不可能嗎? – nassio 2012-04-10 18:53:42
請勿用stdlib代碼擰緊。 – 2012-04-10 18:54:33
@nassio,無論如何都需要將它分成兩個通行證 - 在開始複製之前,您需要知道文件的總數。 – 2012-04-10 19:11:02