Python 如何读取二进制文件?

Python 如何读取二进制文件?,python,file,Python,File,我正在尝试在家庭网络中的客户端和服务器之间发送文件。我只想用一个简单的文件client.txt进行测试 客户端程序应该读取X字节并通过我创建的tcp套接字发送,但我无法理解如何执行发送部分: f = open("client.txt", "rb") while 1: // should read X bytes and send to the socket 我想我需要检查我想要发送的数据是否有效,例如,如果一个文件小于我在每批中发送的1024个数据量。。。。或者它不是这样工作的?read接受一

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

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

f = open("client.txt", "rb")
while 1:
// should read X bytes and send to the socket
我想我需要检查我想要发送的数据是否有效,例如,如果一个文件小于我在每批中发送的1024个数据量。。。。或者它不是这样工作的?

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

要读取文件内容,请调用 f、 readsize,它读取一些 数据的数量,并将其作为 一串大小是可选的数字 论点当尺寸被忽略或 否定的,全部内容 文件将被读取并返回;它是 如果文件的大小是 和你机器的内存一样大。 否则,最多读取大小字节 然后回来了。如果文件的结尾 已达到,f.read将返回 空字符串

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

要读取文件内容,请调用 f、 readsize,它读取一些 数据的数量,并将其作为 一串大小是可选的数字 论点当尺寸被忽略或 否定的,全部内容 文件将被读取并返回;它是 如果文件的大小是 和你机器的内存一样大。 否则,最多读取大小字节 然后回来了。如果文件的结尾 已达到,f.read将返回 空字符串


由于您提到设置服务器部件时遇到问题,我将从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()

可以找到相关文档

,因为您提到您在设置服务器部件时遇到问题,我将从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()

可以找到相关文档

卓越!但是我需要检查f.read1024是否超出范围吗?如果文件大小为1524字节,这将导致2次读取,但在第二次读取时只剩下500b?不,正如unholysampler提到的,readnum在到达文件末尾后将从文件返回最多num字节。它将返回一个空字符串,因此在到达EOF后循环将中断;因为Python将空字符串视为“False”,如果不是,数据将因此计算为True.excelent!但是我需要检查f.read1024是否超出范围吗?如果文件大小为1524字节,这将导致2次读取,但在第二次读取时只剩下500b?不,正如unholysampler提到的,readnum在到达文件末尾后将从文件返回最多num字节。它将返回一个空字符串,因此在到达EOF后循环将中断;因为Python将空字符串视为“False”,如果不是,则数据将计算为True。