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:
...