2016-03-24 3 views
0

Я пытаюсь создать скрипт, который читает файл, находит сегодняшнюю и вчерашнюю дату, а затем печатает весь контент между этими двумя датами. Однако всякий раз, когда я пытаюсь запустить это, я ожидаю, что объект символьного буфера на последней строке.Python ожидает объект буфера символов

import datetime 
import re 
today = datetime.date.today().day 
yesterday = (today - 1) 
file=open("test.txt","r") 
s = file.read() 
start = today 
end = yesterday 

print((s.split(start))[1].split(end)[0]) 
+2

'.split()' ожидает строку, а не целое число. – zondo

+0

Что вы пытаетесь достичь? – msw

+0

Нет необходимости в дополнительных круглых скобках в '(s.split (start)) [1]', и там уже много круглых скобок, особенно если вы добавили 'str', поэтому их стоит удалить. Просто напишите 's.split (start) [1]'. –

ответ

1

start и end целые числа, не строки ... вы не можете разбить строку на целое

"some5string".split(5) # wont work it needs a string 
"some5string".split("5") # will work 

изменения его

print((s.split(str(start)))[1].split(str(end))[0]) 
+0

Большое спасибо, это сработало красиво: D – Toasterino

0

start и end являются int s, которые не могут передаются как аргументы split.

>>> "234".split(3) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: expected a character buffer object 

Вы можете преобразовать их в строки, но я действительно не думаю, что этого достаточно. Просто используя day поле даты только дает вам номер, а не полная дата:

>>> datetime.date.today().day 
25 

Это, вероятно, недостаточно данных для анализа. Посмотрите на форматирование даты в Python.

+0

Спасибо, но для файлов, которые я использую, даты - это просто цифры, а не полные даты :) – Toasterino

+0

Хорошо, тогда я надеюсь, что вы очень осторожны и желательно только запускаете это один раз, потому что есть всевозможные способы, которые могут пойти не так. Например, все остальные данные в файлах не должны содержать чисел, и файлы могут содержать только определенные комбинации дат (например, если файл содержит данные с 29 февраля по 2 марта, пространство всего 3 дня, вы можете ожидать ошибок). –

Смежные вопросы