Для файла CSV, созданного в WLST/Jython 2.2.1, я хочу обновить заголовок, первую строку выходного файла, когда будут обнаружены новые показатели. Это прекрасно работает, используя поиск для перехода к первой строке и перезаписывая строку. Но это не удается, когда количество символов в первой строке превышает 8091 символ.
Я сделал упрощенный скрипт, который воспроизводит проблему, с которой я столкнулся здесь.
#!/usr/bin/python
#
import sys
global maxheaderlength
global initheader
maxheaderlength=8092
logFilename = "test.csv"
# Create (overwrite existing) file
logfileAppender = open(logFilename,"w",0)
logfileAppender.write("." * maxheaderlength)
logfileAppender.write("\n")
logfileAppender.close()
# Append some lines
logfileAppender = open(logFilename,"a",0)
logfileAppender.write("2nd line\n")
logfileAppender.write("3rd line\n")
logfileAppender.write("4th line\n")
logfileAppender.write("5th line\n")
logfileAppender.close()
# Seek back to beginning of file and add data
logfileAppender = open(logFilename,"r+",0)
logfileAppender.seek(0) ;
header = "New Header Line" + "." * maxheaderlength
header = header[:maxheaderlength]
logfileAppender.write(header)
logfileAppender.close()
Когда maxheaderlength равно 8091 или меньше, я получаю ожидаемые результаты. Файл test.csv начинается с «Новой строки заголовка», за которой следуют 8076 точек, а затем строки 2-я строка 3-я строка 4-я строка 5-я строка
Когда maxheaderlength равен 8092>, результат test.csv представляет собой файл, начинающийся с 8092 точек, за которым следует «Новая строка заголовка», а затем 8077 точек. 2-я ... 5-я строка теперь отображается, вероятно, перезаписана точками.
Любая идея, как обойти или исправить это?