open() в python просит integer

Пытаюсь открыть файл в питоне через with open()

def annot_search(i1):
    path = r'C:\Users\5286\Desktop\Study\KiTG Alt\cit-HepTh-unsorted\\' + str(i1) + '.abs'
    # Читаем в строку всё содержимое файла
    with open(path, "rb") as f:
        s = str(f.read())
    # Ищем индекс второго и третьего вхождений подстроки "\n\\\\\n" (всего их 3 - нас интересует текст между 2 и 3)
    i2 = s.index(r'\n\\\\\n', s.index(r'\n\\\\\n')+8, -1)
    i3 = s.index(r'\n\\\\\n', i2+8, -1)
    # annot - текст между этими \\
    annot = s[i2+10:i3:]
    return annot

Делаю в collab и pycharm. Коллаб в принципе отказался работать, выдавая ошибку

TypeError                                 Traceback (most recent call last)
<ipython-input-71-1b7c9bdac3e3> in <module>
      3 print(path)
      4 # Читаем в строку всё содержимое файла
----> 5 with open(path, 'rb') as f:
      6   s = str(f.read())
      7 # Ищем индекс второго и третьего вхождений подстроки "\n\\\\\n" (всего их 3 - нас интересует текст между 2 и 3)

TypeError: an integer is required (got type str)

Путь к файлу в коллабе заменён на нужный (файл подтягивается из хранилища коллаба, не с компьютера). До какого-то момента всё работало в pycharm, однако после некоторых изменений других частей кода и он начал выдавать такую же ошибку

Так вот вопрос: зачем open'у нужен integer? Куда его пихать? До этого прекрасно работал с путём+режимом

С os.path.join() также ничего не меняется


Ответы (1 шт):

Автор решения: Никита

Итак, я разобрался, в чем дело В коде был импорт os как:

from os import *

Что было опрометчивым решением, ибо open() есть как в os, так и в io (мне нужен был именно из io) Всё решилось нормальным импортом os, io и заменой на нужный open():

import os
import io
...
with io.open(path, 'rb') as f:
...
→ Ссылка