Прочитайте первые 10 строк в файле;Если короче только читать эти строки - PullRequest
0 голосов
/ 31 октября 2019

Я хочу открыть файл и прочитать первые 10 строк файла. Если файл содержит менее 10 строк, он должен прочитать столько строк, сколько он имеет. Каждая строка должна быть пронумерована, является ли она текстом или пробелом. Поскольку я должен обрезать каждую строку, я не могу различить пустую строку и конец файла. Например, если я читаю файл только с тремя строками, он выведет строки 1–10, строки 4–10 будут пустыми, но я бы хотел, чтобы он остановился после достижения этой 3-й строки, так как это будет конецфайл. Я был бы очень признателен за любую помощь, спасибо.

def get_file_name():
    fileName = input('Input File Name: ')
    return fileName

def top(fileName):
    try:
        file = open(fileName, 'r')
        line = 'text'
        cnt = 1

        while cnt <= 10: 
            if line != '': 
                line = file.readline()
                line = line.rstrip('\n')
                print(str(cnt) + '.', line)
                cnt += 1
            else:
                line = file.readline()
                line = line.rstrip('\n')
                print(str(cnt) + '.', line)
                cnt += 1
        file.close()
    except IOError:
        print('FILE NOT FOUND ERROR:', fileName)

def main():
    fileName = get_file_name()
    top(fileName)

main()

Ответы [ 3 ]

3 голосов
/ 31 октября 2019
def read_lines():
    f = open("file-name.txt","r")
    num = 1

    for line in f:
        if num > 10:
            break
        print("LINE NO.",num, ":",line)
        num = num + 1

    f.close()

Здесь цикл завершается в конце файла. Так что, если у вас было только 7 строк, он будет выходить автоматически после 7-й строки. Однако, если у вас 10 или более 10 строк, об этом позаботится переменная «num». РЕДАКТИРОВАТЬ: я отредактировал оператор печати, чтобы включить счетчик строк и начал счетчик строк с 1.

1 голос
/ 31 октября 2019
with open(filename, 'r') as f:
    cnt = 1
    for line in f:
        if cnt <= 10:
            print(str(cnt) + '.', line, end='')
            cnt += 1
        else:
            break

Это должно делать именно то, что вам нужно. Вы всегда можете удалить if / else, и тогда он будет читать ровно столько строк в файле. Пример:


with open(filename, 'r') as f:
    cnt = 1
    for line in f:
        print(str(cnt) + '.', line, end='')
        cnt += 1

0 голосов
/ 31 октября 2019

Вы можете попытаться загрузить все строки в массив, сосчитать итоговую строку и использовать оператор if, чтобы проверить, равно ли итоговое значение 10, или нет, и, наконец, использовать цикл for, например for i in range (0,9):, для печати строк.

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