python实现拷贝文件夹打印进度百分比值,使用tqdm
时间: 2023-08-04 22:34:15 浏览: 311
你好!感谢您的提问。下面是使用tqdm在Python中实现拷贝文件夹并打印进度百分比的代码:
```python
import os
import shutil
from tqdm import tqdm
def copytree(src, dst, symlinks=False, ignore=None):
"""
递归地拷贝文件夹,并打印进度百分比。
"""
total_size = sum(os.path.getsize(f) for f in os.listdir(src) if os.path.isfile(os.path.join(src, f)))
with tqdm(total=total_size, unit='B', unit_scale=True, desc='Copying') as pbar:
for item in os.listdir(src):
s = os.path.join(src, item)
d = os.path.join(dst, item)
if os.path.isdir(s):
shutil.copytree(s, d, symlinks, ignore, copy_function=copy_with_progress)
else:
shutil.copy2(s, d, copy_function=copy_with_progress)
pbar.update(os.path.getsize(s))
def copy_with_progress(src, dst):
"""
拷贝文件,并更新进度条。
"""
with open(src, 'rb') as fsrc:
with open(dst, 'wb') as fdst:
shutil.copyfileobj(fsrc, fdst)
```
这段代码使用了`tqdm`库来打印进度条。`tqdm`需要知道总大小才能正确显示进度,所以我们首先计算了要拷贝的文件夹的总大小。然后,在拷贝文件或文件夹时,我们使用自定义的`copy_with_progress`函数来拷贝文件,并更新进度条。最后,我们使用`tqdm`的`update`方法来更新进度条。
希望这个代码对你有所帮助!
阅读全文