чтение файла Python - PullRequest
       3

чтение файла Python

2 голосов
/ 09 июля 2010
def file_open(filename):
    fo=open(filename,'r')
    #fo.seek(5)
    fo.read(3)
    fo.close()

file_open("file_ro.py")

Я ожидаю, что вышеуказанная программа вернет первые 3 байта из файла.Но это ничего не возвращает.Когда я запускаю их в интерактивной командной строке python - я получаю ожидаемый результат!

Ответы [ 3 ]

7 голосов
/ 09 июля 2010

Пока ваш собственный ответ печатает прочитанные байты, он не возвращает их, поэтому вы не сможете использовать результат где-то еще.Кроме того, есть место для нескольких других улучшений:

  • file_open не подходит для функции, поскольку она читает и возвращает байты из файла, а не просто открывает его.
  • Вы должны убедиться, что закрыли файл, даже если fo.read(3) не удалось.Для решения этой проблемы вы можете использовать оператор with .

Модифицированный код может выглядеть примерно так:

def read_first_bytes(filename):
    with open(filename,'r') as f:
        return f.read(3)

Использование:

>>> print read_first_bytes("file.py")
1 голос
/ 09 июля 2010

fo.read() возвращает прочитанные данные, и вы никогда никому их не назначаете. Вы говорите о «выходе», но ваш код не должен ничего выводить. Вы пытаетесь распечатать эти три байта? В этом случае вы ищете что-то вроде

f = open('file_ro.py', 'r')
print f.read(3)

Вы получаете «ожидаемый результат» в интерактивном приглашении, потому что он печатает результат оценки, если он нигде не назначен (и если он не None?), Как в строке fo.read(3) , Или что-то в этом роде, - может быть, кто-то сможет объяснить это лучше.

0 голосов
/ 09 июля 2010
import sys
def file_open(filename):
        fo=open(filename,'r')
        #fo.seek(5)
        read_data=fo.read(3)
        fo.close()
        print read_data
file_open("file.py")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...