2016-04-24 3 views
1

У меня есть сценарий Python, который работает правильно на моем ноутбуке, но при работе на моем малине pi следующий код, похоже, работает некорректно. В частности, «TextFile.txt» не обновляется и/или не сохраняется.Сценарий Python, не записывающий в txt-файл

openfile = open('/PATH/TextFile.txt','w') 
    for line in lines: 
     if line.startswith(start): 
      openfile.write(keep+'\n') 
      print ("test 1") 
     else: 
      openfile.write(line) 
      print ("test 2") 
    openfile.close() 

Я вижу «тест 1» и «тест 2» в моем выходе, так что я знаю, что код быть достигнут, пути правильны, и т.д.

Это может быть из-за проблем с разрешениями , Я бегу сценарий из терминала с помощью:

usr/bin/python PATH/script.py 

Python принадлежит «корень» и script.py принадлежит «Michael».

+0

Если это связано с проблемой разрешений, то открытие файла приведет к исключению, но вы утверждаете, что этого не происходит. –

ответ

0

Поскольку ваш код запущен, должен быть файл где-то.

Вы вызываете «PATH/script.py», но в вашей программе есть «/PATH/TextFile.txt». Является ли косой чертой перед ошибкой PATH? Вы проверили путь в своей программе, где вы ищете выходной файл?

0

Моя первая предпосылка:

Есть ли файл? Если он не существует, вы не можете писать ему. Попробуйте создать файл, если он не существует: file = open('myfile.dat', 'w+')

Кроме того, вручную открывать и закрывать файловые дескрипторы - это плохая практика в python. С заявлением автоматически открывается открытие и закрытие ресурса:

with open("myfile.dat", "w+") as f: 
    #doyourcalculations with the file object here 
    for line in f: 
     print line 
0

Все, спасибо за ваш вклад. Мне удалось выяснить, что он пишет новый файл, но он переписывается одним и тем же текстом. Причина в том, что «.startswith» возвращал false, когда я ожидал, что это правда. Заблуждение было связано с различием между тем, как Windows и Unix рассматривают новые строковые символы (/ n/r).

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