Как работает функция len для файлов? - PullRequest
1 голос
/ 15 января 2012

Документы Python говорят: вернуть длину (количество элементов) объекта. Аргумент может быть последовательностью (строка, кортеж или список) или отображением (словарь).

Код:

from sys import argv

script, from_file = argv

input = open(from_file)
indata = input.read()

print "The input file is %d bytes long" % len(indata)

Содержимое файла: Один два три

После запуска этой простой программы я получаю в качестве вывода: Входной файл имеет длину 14 байтов

Qutestion:

Я не понимаю, если мой файл записал в нем только 11 символов (Раз, два, три), как len может вернуть мне 14 байтов, а не просто 11? если я наберу s = "Один два три", а затем len (s), то получу 13, поэтому я очень запутался.

Ответы [ 3 ]

7 голосов
/ 15 января 2012

«Один два три» - это действительно 13 символов (11 букв + 2 пробела).

>>> open("file.txt", 'w').write("one two three")
>>> len(open("file.txt").read())
13

Скорее всего, у вас есть дополнительный символ для конечной линии, который объясняет 14.

2 голосов
/ 15 января 2012

Один два три

один = 3 символа

два = 3 символа

три = 5 символов

а чем у вас two spaces. Таким образом, всего 13 символов.

при чтении из файла в вашем файле есть дополнительный space, то есть 14 символов.

В вашем интерпретаторе python сделайте следующее:

st = " "
len(st)

выход = 1

1 голос
/ 15 января 2012

Я использовал ваш код и создал файл, аналогичный вашему по содержанию. Результат запуска: действительно, у вас есть лишний непечатаемый символ в файле «Один два три». Это единственное объяснение. Пробел и разрыв строки - самые очевидные вещи, на которые стоит обратить внимание.

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