实现命令行文件拷贝功能并实时输出百分比进度
时间: 2024-09-29 17:04:14 浏览: 28
在Python中,我们可以利用标准库如`os`和`shutil`来实现在命令行环境下进行文件复制,并通过控制台输出进度。这里我给出一个简单的例子,演示如何实现这个功能:
```python
import os
import shutil
import time
def copy_file(src, dest, size, chunk_size=1024, callback=None):
"""Command-line file copy with progress output"""
total_chunks = size // chunk_size
progress = 0
with open(src, 'rb') as src_file, open(dest, 'wb') as dest_file:
while True:
data = src_file.read(chunk_size)
if not data:
break
dest_file.write(data)
progress += 1
current_percent = int((progress / total_chunks) * 100)
if callback is not None:
callback(current_percent)
# 控制输出频率,例如每秒更新一次进度
time.sleep(1)
print(f"\rCopying... {current_percent}% complete", end='', flush=True)
print("\nFile copy completed.")
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage: python command_copy.py <source_file> <destination_file>")
else:
src = sys.argv[1]
dest = sys.argv[2]
copy_file(src, dest, os.path.getsize(src))
# 使用示例:
# python command_copy.py input.txt output.txt
```
在这个脚本中,`copy_file`函数接受源文件名、目标文件名以及两个可选参数:块大小(chunk_size,默认为1KB)和进度回调函数。当复制文件时,它会读取数据块、写入目标文件,并定期计算并打印当前进度。
阅读全文