Чтобы постоянно отслеживать хвост файла, вам просто нужно запомнить длину файла раньше.
public static void MonitorTailOfFile(string filePath)
{
var initialFileSize = new FileInfo(filePath).Length;
var lastReadLength = initialFileSize - 1024;
if (lastReadLength < 0) lastReadLength = 0;
while (true)
{
try
{
var fileSize = new FileInfo(filePath).Length;
if (fileSize > lastReadLength)
{
using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
fs.Seek(lastReadLength, SeekOrigin.Begin);
var buffer = new byte[1024];
while (true)
{
var bytesRead = fs.Read(buffer, 0, buffer.Length);
lastReadLength += bytesRead;
if (bytesRead == 0)
break;
var text = ASCIIEncoding.ASCII.GetString(buffer, 0, bytesRead);
Console.Write(text);
}
}
}
}
catch { }
Thread.Sleep(1000);
}
}
Мне пришлось использовать ASCIIEncoding, потому что этот код недостаточно умен, чтобы обслуживать для переменных длин символов UTF8 на границах буфера.
Примечание. Вы можете изменить часть Thread.Sleep на разные тайминги, а также вы можете связать ее с файловым и шаблоном блокировки - Monitor.Enter / Wait /Пульс. Для меня достаточно таймера и, самое большее, он проверяет длину файла каждую секунду, если файл не изменился.
Самое простое решение было бы переустановить NumPy.
Откройте командную строку и введите:
pip3 uninstall numpy
или
pip uninstall numpy
для Python 2,
затем
pip install numpy