Python 将文本文件绑定到本地端口以从中读取
我正在寻找一种用Python将文本文件绑定到我的机器上的端口的方法,这种方法与流畅的Linux命令所做的相同Python 将文本文件绑定到本地端口以从中读取,python,file,sockets,pyspark,Python,File,Sockets,Pyspark,我正在寻找一种用Python将文本文件绑定到我的机器上的端口的方法,这种方法与流畅的Linux命令所做的相同 cat myfile.txt | pv -l -L 2000 -q | nc -lk 9999 我想在Windows上使用此命令,因此无法直接使用上面的命令。我之所以想这样做,是因为我有另一个Python代码(使用pyspark),它以流的形式从这个端口读取数据 data = StreamingContext(sc, 1).socketTextStream("localhost", 9
cat myfile.txt | pv -l -L 2000 -q | nc -lk 9999
我想在Windows上使用此命令,因此无法直接使用上面的命令。我之所以想这样做,是因为我有另一个Python代码(使用pyspark),它以流的形式从这个端口读取数据
data = StreamingContext(sc, 1).socketTextStream("localhost", 9999)
可能是相关文件
我对pyspark一无所知,但我猜大致是这样的:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 9999))
s.listen(1)
con, adr = s.accept()
with open('myfile.txt') as f:
for line in f:
con.sendall(line)
con.close()
应该有用。它逐行发送,这可能适用于您的用例(我注意到它是一个文本文件)
如果您想在外出时打印一些统计数据:
from __future__ import print_function
import sys
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 9999))
s.listen(1)
print('listening')
con, adr = s.accept()
print('connected')
with open('myfile.txt') as f:
f.seek(0,2) # go to end of file
filesize = f.tell()
f.seek(0)
sent = 0
for line in f:
con.sendall(line)
sent += len(line)
print('%s of %s' % (sent, filesize), end='\r')
sys.stdout.flush()
con.close()
此代码发送文件,然后关闭。如果您想让它重复发送文件,或者发送到多个客户机,那么您可以扩展它来完成,但这有点复杂