Я пытаюсь читать файлы и собирать данные внутри файлов. Я смотрю в свой каталог, двигаюсь к папке и смотрю туда.
Я хотел бы прочитать каждую строку в файле.
Я читал, что мой вывод выглядит как двоичный. Я пытался осмотреться в stackoverflow. Я также убедился, что файл, который я читаю, является текстовым файлом.
import os
def ratio(filename):
cwd = str(os.getcwd())
cwd = cwd[:-8]
cwd = cwd + "Equities\\" + str(filename) + ".txt"
file = open(cwd, "r")
line_1=str(file.readline(4))
print(line_1)
readline(4)
должен вернуться:
Current assets
Моя функция readline(4)
возвращает:
ÿþA\000
Есть ли лучшая функция для использования? Спасибо!
Довольно сложно понять, что вы хотели сделать из своего вопроса. Если вы действительно пытаетесь прочитать четвертую строку (без смещения смещения), вы можете использовать readlines(), которая возвращает список ваших строк, а затем читать результат в ячейке [3]
Я бы использовал next(itertools.islice(file, 3, None))
; islice
пропустит строки 0, 1, 2, поэтому next
вернет строку 3 (четвертую строку).
Что -8
должен пропускать? Вероятно, вы захотите использовать функции в os.path
для управления путями к файлам, а не рассматривать их как строки.
У меня есть директория /Theo/, внутри две папки: акции и программы. -8 отходит от программ, поэтому я могу перейти к акциям.
Если вы пытаетесь прочитать определенную строку, попробуйте:
lines=file.readlines()
text = lines[4]
readline читает по одной строке за раз. Вместо этого вы можете использовать readlines для одновременного чтения всех строк в список.
Как я уже упоминал в своем комментарии, readline(4)
читает только 4 байта из первой строки, а не из четвертой.
Теперь функция возвращает '\x00\n'
Пробовали file=open('cwd','r',encoding='utf-8')
?
uiltins.UnicodeDecodeError: кодек utf-8 не может декодировать байт 0xff в позиции 0: недопустимый начальный байт
Ваш файл, вероятно, не закодирован в utf-8. Взгляните на docs.python.org/2.4/lib/standard-encodings.html и посмотрите, в чем он может быть. Это может быть один из форматов Windows. Вы можете попробовать это, чтобы увидеть, сработает ли это.
readline(4)
не читает 4-ю строку. В python 2 он указывает максимальное количество байтов, которые можно прочитать из строки. Когда вы так это называете, это чтение неполного символа из первой строки.