如何读取二进制文件?

时间:2011-02-11 16:19:46

标签: python file

我正在尝试在家庭网络中的客户端和服务器之间发送文件。我只想用一个简单的文件client.txt进行测试。

客户端程序应该读取X字节并通过我创建的tcp套接字发送它,但我无法理解如何发送部分:

f = open("client.txt", "rb")
while 1:
// should read X bytes and send to the socket

我想我需要检查一下我要发送的数据是否有效,如果一个文件比例小,那么我在每批中发送的数量(例如1024)......或者它是否有效那样的?

2 个答案:

答案 0 :(得分:4)

由于您提到您在设置服务器部分时遇到问题,我将从Python文档中删除它并稍微编辑它:

import socket

HOST = ''
PORT = 50007

s = socket.socket()
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()

f = open("client.txt", "rb")
while 1:
    data = f.read(1024)
    if not data: break
    conn.send(data)
conn.close()

可以找到相关文件here

答案 1 :(得分:1)

read()接受一个可选参数,指定要读入的字节数。

Documentation

  

要阅读文件的内容,请致电   f.read(大小),读取一些   数据量并将其作为a返回   串。 size是可选的数字   论点。当省略尺寸或   否定,整个内容   文件将被阅读并返回;它的   你的问题,如果文件是两倍   大到你机器的记忆力。   否则,最多读取大小字节   并返回。如果文件结束   已到达,f.read()将返回   一个空字符串(“”)。