Я хочу код python 3.7+, который ожидает появления файла .text, где заливка .text появится в каталоге через внешнюю программу, а также добавила новые строки в этот файл .text этим внешним Программа в промежуток времени. Когда появляется текстовый файл, я открываю его, пока он еще записывается, и распечатываю содержимое. Поскольку текстовый файл обновляется внешней программой, я хочу напечатать любые новые строки, записываемые в него. Если в файл не записана новая строка, я хочу подождать. тогда, когда доступны новые строки, я хотел бы печатать только новые строки. Еще одна вещь, которую нужно улучшить, - это дождаться появления файла, а не просто приостановить выполнение сценария python.
Приведенный ниже код разбивает содержимое текстового файла на несколько текстовых файлов в зависимости от номера линия в нем. Здесь операция выполняется c, а не динамически c.
import os
import sys
import linecache
from util import run
class Split_file():
def __init__(self, path, neighbourhood):
self.path = path
self.neighbourhood = neighbourhood
self.line_no = 0
self.part_stored = {}
def split(self):
f = open(f'{self.path}\{self.neighbourhood[0]}.txt','r').read().split('\n')
length = len(self.neighbourhood) - 1
print("neighbour :",length)
linetotal = len(f)
print("total lines :",linetotal)
# splitLen = int(linetotal / length)
splitLen = 1
# print(splitLen)
i = 1
for lines in range(self.line_no, len(f), splitLen):
e = i % length
if e == 0:
e = length
print("neighbour no:",e)
slpitdata = linecache.getline(f'{self.path}\{self.neighbourhood[0]}.txt',i)
output = open(f'{self.path}/{self.neighbourhood[e]}.txt', 'a+')
output.write(''.join(slpitdata))
output.close()
else:
print("neighbour no:",e)
slpitdata = linecache.getline(f'{self.path}\{self.neighbourhood[0]}.txt',i)
output = open(f'{self.path}/{self.neighbourhood[e]}.txt', 'a+')
output.write(''.join(slpitdata))
output.close()
i += 1
print("succesfully splited")
line_no = i
# self.part_stored[id] = split_file
if __name__=="__main__":
lis = sys.argv[2:]
o_path = os.path.abspath(os.path.realpath(sys.argv[1]))
path = (f'{o_path}\{lis[0]}')
split_file = Split_file(path, lis)
try:
run(
split_file.split()
)
except KeyboardInterrupt:
print("Exiting...")
exit()