У меня есть пара функций, которые называются рекурсивно внутри вложенных циклов. Конечная цель моей программы заключается в следующем:как пропустить остальную часть последовательности
а) петли через каждый год,
б) в каждом каждый год, цикл через каждый месяц (12 общих),
с) в течение каждого месяца, проходной каждый день (используя собственный счетчик дней),
d) и прочитайте 2 файла и объедините их вместе в другой файл.
В каждом случае я спускаюсь в каталог только в том случае, если существует. В противном случае я должен просто пропустить его и перейти к следующему. Мой код выполняет довольно хорошую работу , когда присутствуют все файлы, но когда один из файлов отсутствует, я просто хочу пропустить весь процесс создания объединенного файла и продолжить цикл. Проблема, которую я получаю, - это синтаксическая ошибка, указывающая, что continue
не входит в цикл. Я получаю эту ошибку только в определениях функций, а не за их пределами.
Может кто-нибудь объяснить, почему я получаю эту ошибку?
import os, calendar
file01 = 'myfile1.txt'
file02 = 'myfile2.txt'
output = 'mybigfile.txt'
def main():
#ROOT DIRECTORY
top_path = r'C:\directory'
processTop(top_path)
def processTop(path):
year_list = ['2013', '2014', '2015']
for year in year_list:
year_path = os.path.join(path, year)
if not os.path.isdir(year_path):
continue
else:
for month in range(1, 13):
month_path = os.path.join(year_path, month)
if not os.path.isdir(month_path):
continue
else:
numDaysInMth = calendar.monthrange(int(year), month)[1]
for day in range(1, numDaysInMth+1):
processDay(day, month_path)
print('Done!')
def processDay(day, path):
day_path = os.path.join(path, day)
if not os.path.isdir(day_path):
continue
else:
createDailyFile(day_path, output)
def createDailyFile(path, dailyFile):
data01 = openFile(file01, path)
data02 = openFile(file02, path)
if len(data01) == 0 or len(data02) == 0:
# either file is missing
continue
else:
# merge the two datalists into a single list
# create a file with the merged list
pass
def openFile(filename, path):
# return a list of contents of filename
# returns an empty list if file is missing
pass
if __name__ == "__main__": main()
Обратите внимание, что с помощью 'if ... then continue else ...' избыточно - вы можете пропустить ключевое слово 'else' и поместить остальную часть кода на том же уровне, поэтому вы использовали' continue' в первую очередь. –