Я работаю над некоторым кодом (который мне предоставлен), как часть курсовой работы в университете.Проверить размер файла, присвоенного переменной в Python 2
Часть кода требует, чтобы мы проверяли файл, который мы пишем, чтобы содержать любые данные.
Файл был открыт для записи в коде уже:
f = open('newfile.txt', 'w')
Первоначально я думал, что я просто найти длину файла, однако, если я попытаюсь: len(f)>512
, я получаю сообщение об ошибке:
TypeError: object of type 'file' has no len()
у меня было немного гугле и нашел различные ссылки, такие как here, однако, когда я пытаюсь с помощью строки: os.stat(f).st_size > 512
, я получаю следующее сообщение об ошибке:
TypeError: coercing to Unicode: need string or buffer, file found
Если я попытаюсь использовать имя самого файла: os.stat("newfile.txt").st_size > 512
, он отлично работает.
Мой вопрос: есть ли способ, которым я могу использовать переменную, которой был назначен файл, f
, или это просто невозможно?
Для контекста, функция выглядит следующим образом:
def doData():
global data, newblock, lastblock, f, port
if f.closed:
print "File " + f.name + " closed"
elif os.stat(f).st_size>512:
f.write(data)
lastblock = newblock
doAckLast()
EDIT: Спасибо за ссылку на другой пост Морган, однако это не работает для меня. Главное, что программы все еще ссылаются на файл по пути и имени файла, тогда как мне нужно ссылаться на него вместо имени переменной.
После того, как вы откроете файл с ' 'w'', вы удалите все содержимое файла. Вы должны проверить * до *, вы открываете файл для записи. Из-за этого вы не можете использовать 'f' для проверки. – zondo
Возможный дубликат [python как проверить файл пустым или нет] (http://stackoverflow.com/questions/2507808/python-how-to-check-file-empty-or-not) –
'f.tell() 'можно использовать для чтения позиции файла и указать, был ли в файле уже записаны некоторые данные, но, как сказал @zondo, файл усекается при открытии для записи. –