Редактирование одной строки в файле с использованием Python. Последняя часть нового файла отсутствует - PullRequest
3 голосов
/ 14 июня 2011

Я пытаюсь редактировать одну строку в файле povray, используя python.

Файл начинается следующим образом:

camera {
 angle 38
 location <500,0,0>
 right x*image_width/image_height
 look_at <0,0,0>
 rotate <0,0,0>
}

, и я хочу отредактировать переменные, описанные в файле, так, чтобы он выглядел следующим образом:

camera {
 angle 38
 location <1000,1000,1000>
 right x*image_width/image_height
 look_at <10,10,10>
 rotate <30,30,30>
}

ToДля этого я использую следующий метод:

def updateCamera(self, filename):
        tmp = "povrayContent/temp.pov"
        lines = open(filename, 'r')
        out = open(tmp , 'w')
        for line in lines:
            if " angle" in line:
                out.write(" angle "+str(int(self.camAngle))+"\n")
            elif " location" in line:
                out.write(" location <"+str(int(self.camera[0]))+","+str(int(self.camera[1]))+","+str(int(self.camera[2]))+">\n")
            elif " look_at" in line:
                out.write(" look_at <"+str(int(self.camera[3]))+","+str(int(self.camera[4]))+","+str(int(self.camera[5]))+">\n")
            elif "rotate" in line:
                out.write(" rotate <"+str(int(self.camera[6]))+","+str(int(self.camera[7]))+","+str(int(self.camera[8]))+">\n")
            else:
                out.write(line)
        shutil.copy(tmp, filename)

РЕДАКТИРОВАТЬ: Камера представляет собой кортеж, который содержит новые значения, переменные должны быть изменены.По большей части это, кажется, работает.Единственная проблема заключается в том, что после объявления камеры в сцене появляется около 40 тыс. Строк других объявлений объектов.У меня проблема в том, что последние 20 или около того строк объявлений отсутствуют в новом файле.Кто-нибудь знает, что происходит, есть ли какое-то ограничение Python, о котором я не знаю?

1 Ответ

7 голосов
/ 14 июня 2011

Либо очистите, либо закройте временный файл перед копированием, чтобы убедиться, что весь вывод записан на диск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...