0

Решаю лабораторную работу, по условию задачи я должен взять файл .py и вставить в начало каждой строки '#i', где i будет номером этой строки. Для этого я хочу применить метод .format.

Как правильно составить такую команду? Пробовал через '+' и через '%' и через ',' - везде ошибка: UnsupportedOperation: not readable

temp = []
file = open('example.py', 'r')
for line in file.read().split('\n'):
    temp.append(line)

file.close()

file1 = open('example.py', 'w')
i = 1
for line in file1:
    file1.write('#%i'%i.format(line.strip())+ '\n') #строка с ошибкой
    i = i+1

file1.close()

1 Answers1

1

Добавлять так:

newline = "#{0} {1}".format(i, line)

Но код вам все равно придется править. Зачем вам переменная temp, если она нигде не используется?

  • согласен про temp, ошибся, однако в вашем примере строка добавлялась в никуда. – badordos Jan 25 '18 at 09:26
  • Так работает, спасибо за ответ. newline = "#{0} {1} \n".format(i, line) file1.write(newline) – badordos Jan 25 '18 at 09:26
  • Все убрал, оставил только одну строку с форматированием, а то действительно мой код целиком был нерабочий :) – Эникейщик Jan 25 '18 at 09:27
  • @jfs Пробел - чтобы лучше читалось, новая строка добавляется в вопросе, скопировал оттуда. Можно не добавлять. – Эникейщик Jan 25 '18 at 09:31
  • @jfs действительно, пустая строка появляется в конце, которая еще и тоже нумеруется. Не подскажете, как ее убрать? Ведь если убрать \n запись в файле будет происходить в 1 строку. – badordos Jan 25 '18 at 09:45
  • @badordos Убрать \n. Одной строки не будет, перевод на новую строку уже есть в самой строчке. – Эникейщик Jan 25 '18 at 09:47
  • @badordos: line уже содержит новую строку, не нужно добавлять ещё. Вот полный пример кода, замените print(n, line, end='') на print(f"#{n} {line}", end=''), чтобы с помощью ''.format нумерованные комментарии выставить. – jfs Jan 25 '18 at 09:51
  • @Эникейщик если убрать \n - все будет в одну строку. – badordos Jan 25 '18 at 10:04
  • Пустая строка появляется, когда я считываю и разделяю файл на строки, используя разделитель по \n, так что изменение записи тут не поможет, похоже – badordos Jan 25 '18 at 10:21
  • Используйте .readline() - автоматически читает построчно. – Эникейщик Jan 25 '18 at 12:38