Мой английский может быть плохим, поэтому извинитеЦикл Python возвращает только последнее значение
HI. У меня есть некоторые проблемы с циклом питона. Мой скрипт учитывает все будние дни между двумя датами и в течение каждого дня копирует весь текст из x.txt в textfile.txt, вставляя дату в начале текста. x - несколько текстовых файлов, пронумерованных от 1 до n. Например, дата начала составляет 1,1,2017, дата окончания - 5,1,2017. 1.txt содержит aaa, 2.txt - bbb, 3.txt - ccc и т. Д. Выходной файл должен быть:
2017-01-02 (because 1 January is Sunday which is weekend)
aaa
2017-01-03
bbb
2017-01-04
ccc
2017-01-05
ddd
Но, похоже,
2017-01-05
aaa
2017-01-05
bbb
2017-01-05
ccc (only 3 files are processed, should be 4 and only last date is inserted everywhere)
Я добавил print n
пытается проследить, где проблема, и после того, как for x in range (1, n):
это дает мне
2
3
3
4
4
4
Вот мой код:
# -*- coding: utf-8 -*-
from datetime import datetime
from datetime import timedelta
import shutil
import os
def dc(d1, m1, y1, d2, m2, y2):
start = datetime(y1, m1, d1)
end = datetime(y2, m2, d2)
delta = timedelta(days=1)
d = start
n = 1
weekend = ([5, 6])
while d <= end:
if d.weekday() not in weekend:
with open('textfile.txt','wb') as destination:
for x in range (1, n):
print n
with open(str(x) + '.txt','rb') as source:
destination.write(str(d)[:10])
destination.write(os.linesep)
shutil.copyfileobj(source, destination)
destination.write(os.linesep*2)
n += 1
d += delta
dc(1,1,2017,5,1,2017)
Итак, главный вопрос: как мне заставить это работать, как планировалось?
И некоторые другие вопросы
Как я могу хранить входные данные в другой форме? Наличие 30 текстовых файлов для меня в порядке, но в будущем я хочу выбрать источник ввода, и, имея 5 папок с 30 файлами в каждом из них, будет сложно их организовать. Может быть, я могу использовать списки или что-то еще?
Как я могу переформатировать дату, которая написана в выходном файле? yyyy-mm-dd в порядке, но я предпочитаю dd-mm-yyyy
этот скрипт будет работать с n = 30 в большинстве случаев, но если n < 30, мне бы хотелось, чтобы последние 5 скопированных файлов всегда были будет 25.txt-30.txt Буду рад услышать любые предложения. спасибо за помощь
Исправьте углубление в коде. Сейчас это неправильно. – Psytho