Файлы в Python 3 - PullRequest
       1

Файлы в Python 3

0 голосов
/ 13 февраля 2019

У меня есть следующий код:

# Read files

file = open("lightning_data.txt",'r')
filelen=len(file.read())
print('file length is', filelen)
file.close()


file = open("lightning_data.txt",'w')


if filelen<3:
    file.write('0.90 \n1.68 \n10.752 \n8.54892')
    print('written to file')

file.close()

Когда я запускаю его, я вижу следующее:

file length is 0
written to file

Файл был создан и заполнен "0,90 \ n1.68 \ n10.752 \ n8.54892 "

Если я запускаю его снова, вывод будет:

file length is 27

И файл станет пустым!Почему?

Ответы [ 3 ]

0 голосов
/ 13 февраля 2019

Проблема в том, что команда

file = open("lightning_data.txt",'w')

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

file = open("lightning_data.txt",'a')

, и тогда содержимое не будет усечено.

0 голосов
/ 13 февраля 2019

Когда вы открываете файл во второй раз, чтобы записать в режиме 'w', вы сказали перезаписать то, что находится в файле, и, поскольку вы ничего не пишете, если filelen меньше 3, ничего не записывается, поэтому вы получаете пустоефайл.Режим поиска файлов может быть «a»

0 голосов
/ 13 февраля 2019

Поскольку программа сделала то, что вы сказали:

  • Откройте файл для записи
  • Пишите только в файл (и печатайте об этом), если его текущая длина (измеряется в байтах) меньше 3
  • Закройте файл в любом случае
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...