Пишу на Питоне.

Oct 11, 2012 23:52

Вот документация: http://www.tutorialspoint.com/python/file_read.htm

Что же возвращает метод read(size)? Мне не понятно. Может вернуть строку, а может массив байтов, и это разные вещи. Как понять?

динамическая типизация, не люблю

Leave a comment

Comments 29

lomeo October 11 2012, 20:00:43 UTC
строка == массив байтов в Питоне.

Reply

ext_8865 October 11 2012, 20:02:47 UTC
если речь о 2.x

Reply

thesz October 11 2012, 20:05:32 UTC
2.7.

Но это получается невообразимый ужас i18n.

Reply

ext_8865 October 11 2012, 20:16:53 UTC
Там еще есть отдельный тип для юникодных строк, unicode, который как раз массив code point'ов а не байтов.

Но вообще да, некрасиво, поэтому в 3.x строки от байтов окончательно отделили.

Reply


justy_tylor October 11 2012, 20:43:49 UTC
Про байтики - можно использовать массивы из array и структуры из ctypes, совместно с методом readinto(some_buffer). Ещё есть модуль struct, но тупой и медленный.

Это когда 2.6 или 2.7. Разные 3.x даже издалека палочкой лучше не трогать.

Reply

thesz October 11 2012, 21:11:43 UTC
Ага, добрался, спасибо.

Reply

eg_fread October 11 2012, 22:09:41 UTC

honeyman October 11 2012, 20:46:23 UTC
Лучше всё-таки читать официальную документацию.
http://docs.python.org/library/stdtypes.html#file.read:
Read at most size bytes from the file (less if the read hits EOF before obtaining size bytes). If the size argument is negative or omitted, read all data until EOF is reached. The bytes are returned as a string object.

Reply

thesz October 11 2012, 21:11:13 UTC
Хорошо.

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

Reply

ext_1113789 October 11 2012, 23:26:29 UTC
Строка, тот же список. Можно по индексу.

А чего сделать то нужно?
Прочитали байтики из файла, и ...

Reply

thesz October 11 2012, 23:30:45 UTC
x = f.read(1)
print ("%d" % (x[0])) - не работает. Надо целое, приходит строка.
print ("%d" % (x[0].ord())) - не работает. У строки нет метода ord.

И тп.

Я нашёл решение, но опыт из других ОО языков на Питон не переносим.

Reply


Leave a comment

Up