2010-06-01 5 views
2

Я запускаю некоторые тесты и должен писать в файл. Когда я запускаю тест, open = (file, 'r+') не записывает в файл. Тестовый скрипт ниже:Невозможно записать в текстовый файл

class GetDetailsIP(TestGet): 

    def runTest(self): 

     self.category = ['PTZ'] 

     try: 
      # This run's and return's a value 
      result = self.client.service.Get(self.category) 

      mylogfile = open("test.txt", "r+") 
      print >>mylogfile, result 
      result = ("".join(mylogfile.readlines()[2])) 
      result = str(result.split(':')[1].lstrip("//").split("/")[0]) 
      mylogfile.close() 
     except suds.WebFault, e:       
      assert False 
     except Exception, e: 
      pass 
     finally: 
      if 'result' in locals(): 
       self.assertEquals(result, self.camera_ip) 
      else: 
       assert False 

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

Я также попробовал mylogfile.write(result). Если файл не существует, то файл заявки не существует и не создает его.

Может ли это быть проблемой разрешения, при которой python не может создавать файл? Я убедился, что все остальные чтения этого файла закрыты, поэтому я не должен быть заблокирован.

Может ли кто-нибудь предложить любое предположение, почему это происходит?

Thanks

+0

Вы закрываете дескриптор файла, не записывая его. –

+0

@Srinivas Reddy Thatiparthy - 'print >> mylogfile, result' должен написать ему до закрытия. Я также попробовал 'mylogfile.write (result)' – chrissygormley

+0

Я не эксперт python, но не r + для чтения и w + для записи? –

ответ

5

После записи ваш курсор находится в конце файла. Если вы хотите, чтобы читать текст, который вы должны перейти к началу:

>>> mylogfile = open("test10.txt", "w+") 
>>> print >> mylogfile, 'hola' 
>>> mylogfile.flush()  #just in case 
>>> print mylogfile.read() 
          #nothing because I'am at the end of the file 
>>> mylogfile.seek(0) 
>>> print mylogfile.read() 
hola 

Кроме того, он также работает, если вы закроете файл, прежде чем читать (но, возможно, это не более эффективный метод для Вашего случая).

>>> mylogfile = open("test.txt", "w") 
>>> print >> mylogfile, 'hola' 
>>> mylogfile.close() 
>>> mylogfile = open("test.txt", "r") 
>>> print mylogfile.read() 
hola 
+0

Спасибо, эта работа отлично. +1 – chrissygormley

+0

@joanquin - Это еще лучше. Это делает его намного опрятным. благодаря – chrissygormley

Смежные вопросы