Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将文本文件绑定到本地端口以从中读取_Python_File_Sockets_Pyspark - Fatal编程技术网

Python 将文本文件绑定到本地端口以从中读取

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

我正在寻找一种用Python将文本文件绑定到我的机器上的端口的方法,这种方法与流畅的Linux命令所做的相同

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()
此代码发送文件,然后关闭。如果您想让它重复发送文件,或者发送到多个客户机,那么您可以扩展它来完成,但这有点复杂