如何修改python代码_这段python2代码要怎么改才能在python3运行?

在python3中出现的错误:Traceback (most recent call last):

File "C:\Users\Administrator\Desktop\接收端.py", line 35, in

filename = 'new_'+filename.strip("\00")

TypeError: a bytes-like object is required, not 'str'

如果我将filename改成bytes:bytes(filename,encoding=“utf-8”)

就出现这样的错误:Traceback (most recent call last): File "C:\Users\Administrator\Desktop\接收端.py", line 35, in filename=bytes(filename,encoding="utf-8") TypeError: encoding or errors without a string argument

接收端:

# -*- coding: cp936 -*-

from socket import *

import struct

ADDR = ('127.0.0.1',8008)

BUFSIZE = 1024

FILEINFO_SIZE=struct.calcsize('128s32sI8s')

recvSock = socket(AF_INET,SOCK_STREAM)

recvSock.bind(ADDR)

recvSock.listen(True)

print ("等待连接...")

conn,addr = recvSock.accept()

print ("客户端已连接—> ",addr)

fhead = conn.recv(FILEINFO_SIZE)

filename,temp1,filesize,temp2=struct.unpack('128s32sI8s',fhead)

#print filename,temp1,filesize,temp2

print ("文件名:",str(filename,encoding="utf-8")),len(filename),type(filename)

print ("文件大小:",filesize,"字节")

filename = 'new_'+filename.strip("\00")

fp = open(filename,'wb')

restsize = filesize

print ("正在接收文件... ",)

while 1:

if restsize > BUFSIZE:

filedata = conn.recv(BUFSIZE)

else:

filedata = conn.recv(restsize)

if not filedata: break

fp.write(filedata)

restsize = restsize-len(filedata)

if restsize == 0:

break

print ("接收文件完毕,正在断开连接...")

fp.close()

conn.close()

recvSock.close()

print ("连接已关闭...")

发送端:

# -*- coding: cp936 -*-

from socket import *

import os

import struct

ADDR = ('127.0.0.1',8008)

BUFSIZE = 1024

filename = "VS.txt"

filename = bytes(filename,encoding="utf-8")

FILEINFO_SIZE=struct.calcsize('128s32sI8s')

sendSock = socket(AF_INET,SOCK_STREAM)

sendSock.connect(ADDR)

fhead=struct.pack('128s11I',filename,0,0,0,0,0,0,0,0,os.stat(filename).st_size,0,0)

sendSock.send(fhead)

fp = open(filename,'rb')

while 1:

filedata = fp.read(BUFSIZE)

if not filedata: break

sendSock.send(filedata)

print ("文件传送完毕,正在断开连接...")

fp.close()

sendSock.close()

print ("连接已关闭...")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值