Python 在 Windows 环境下(在 linux 环境下不存在此问题)在 write 后直接 read会出现乱码问题的解决方法

foo= open("foo.txt", "w+")
foo.write('www.runoob.com')
print(foo.read())

改进以后的代码如下:

foo= open("foo.txt", "w+")
foo.write('www.runoob.com')
foo.flush()
foo.seek(0)#指定文件指针为文件开头
print(foo.read())

读取乱码问题完美解决。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用 Python 的 socket 进行文件传输时,确保在发送和接收数据时使用相同的编码格式是很重要的。对于文件传输,您可以使用二进制模式("rb" 和 "wb")来确保数据以二进制形式传输,而不导致编码问题。 当您从 Windows 系统发送文件到 Linux 系统时,可以按照以下步骤进行操作: 1. 发送端(Windows):以二进制模式读取文件并发送给接收端。例如: ```python import socket HOST = '接收端IP地址' PORT = 接收端端口号 file_path = '要发送的文件路径' with open(file_path, 'rb') as file: data = file.read() with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((HOST, PORT)) s.sendall(data) ``` 2. 接收端(Linux):以二进制模式接收数据,并将其写入文件。例如: ```python import socket HOST = '0.0.0.0' # 监听所有网络接口 PORT = 接收端端口号 file_path = '要保存的文件路径' with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((HOST, PORT)) s.listen(1) conn, addr = s.accept() with conn: with open(file_path, 'wb') as file: while True: data = conn.recv(4096) if not data: break file.write(data) ``` 在这个过程中,使用的是二进制模式进行文件传输,因此不涉及到编码问题。请确保发送端和接收端的文件路径和端口号都正确设置。 如果您仍然遇到中文乱码问题,请确保文件的编码格式是正确的,并在接收端使用正确的编码格式进行处理。您可以使用`decode`方法将二进制数据解码为字符串,并使用`encode`方法将字符串编码为二进制数据。例如,在接收端: ```python data = conn.recv(4096) decoded_data = data.decode('utf-8') # 对解码后的字符串进行处理 # 如果需要将字符串编码为二进制数据发送回发送端,可以使用以下方式: encoded_data = decoded_data.encode('utf-8') conn.sendall(encoded_data) ``` 请注意,在处理字符串时,确保在发送端和接收端使用相同的编码格式(如UTF-8)进行解码和编码,以避免乱码问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值