Итак, я пытаюсь использовать глобальные переменные, которые будут использоваться в цикле For. Этот код работает без ошибок, если не в функции «def», но мне нужно, чтобы это было так, как я пытаюсь создать диалоговое окно tkinter-файла, которое запускает код после выбора файла, если вы можете либо помочь мне рассказать, что я делаю неправильно или дать мне альтернативу использованию tkinter и «def».Python3 как объявить глобальные переменные для цикла «For»
Рабочий код:
import os
import sqlite3
from datetime import datetime
# import datetime
import itertools
from dateutil.relativedelta import relativedelta
date = datetime.strptime('1991-01-01', '%Y-%m-%d')
f_path = 'C:/Users/Lewis Collins/Job_Code/data/cru_ts_2_10.1991-2000_cutdown.pre'
# db = sqlite3.connect('output.db')
# cursor = db.cursor()
# cursor.execute('CREATE TABLE Rainfall (Xref, Yref, Date, Value)')
# date = datetime.date(1991,1,1)
flag = 0
Xref = ''
Yref = ''
with open(f_path) as file_read:
for row in itertools.islice(file_read, 5, None):
# print(row)
if 'Grid-ref' in row:
Xref = row.split(',')[0].split('= ')[1]
Yref = row.split(',')[1]
date = datetime.strptime('1990-12-01', '%Y-%m-%d')
else:
for Value in row.split():
date = date + relativedelta(months=+1)
# print(Xref.strip(), Yref.strip(), date, Value)
# print(Xref, Yref, date, Value)
# db.commit()
# db.close()
Edited Код:
import tkinter
from datetime import datetime
from dateutil.relativedelta import relativedelta
import itertools
#date = datetime.strptime('1991-01-01', '%y-%m-%d')
# date = datetime.strptime('1991-01-01', '%Y-%m-%d')
f_path = 'C:/Users/Lewis Collins/Job_Code/data/cru_ts_2_10.1991-2000_cutdown.pre'
Xref = ''
Yref = ''
def read_date():
with open(f_path) as file_read:
for row in itertools.islice(file_read, 5, None):
if 'Grid-ref' in row:
Xref = row.split(',')[0].split('= ')[1]
Yref = row.split(',')[1]
date = datetime.strptime('1990-12-01', '%y-%m-%d')
else:
for Value in row.split():
date = date + relativedelta(months=+1)
print(Xref.strip(), Yref.strip(), date, Value)
Не используйте глобальную переменную. Вместо этого верните результат своей функции. – spectras