python实现文件上传并返回进度_python实现socket上传下载文件-进度条显示
时间: 2024-02-21 22:02:10 浏览: 26
您好,以下是Python实现文件上传并返回进度的一个简单示例代码:
```python
import os
import sys
import socket
def sendfile(sock, file_path):
# 获取文件大小
file_size = os.path.getsize(file_path)
# 发送文件名和文件大小
file_name = os.path.basename(file_path)
sock.sendall((file_name + '\n' + str(file_size) + '\n').encode())
# 发送文件内容并更新进度条
progress = 0
with open(file_path, 'rb') as f:
while True:
data = f.read(1024)
if not data:
break
sock.sendall(data)
progress += len(data)
sys.stdout.write('\r' + 'Progress: %.2f%%' % (float(progress) / file_size * 100))
sys.stdout.flush()
print('\nFile sent successfully.')
if __name__ == '__main__':
# 创建socket并连接到服务端
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('127.0.0.1', 8888))
# 发送文件
sendfile(sock, 'test.txt')
# 关闭socket
sock.close()
```
在以上代码中,我们首先获取了要上传的文件的大小和文件名,然后通过socket发送给服务端。接着,我们每次读取1024字节的文件内容,发送给服务端,并在控制台上显示上传进度。
服务端代码类似,这里不再赘述。需要注意的是,如果要实现实时的进度更新,我们需要使用`sys.stdout.write`和`sys.stdout.flush`这两个方法来控制输出。