['BBBBB', '20190213', 'SUCCESS', 'Job_name1', '2019-02-14 18:11:55', '2019-02-14 18:11:56', '0.02']
['AAAAA', '20190213', 'SUCCESS', 'job_name2', '2019-02-14 18:11:48', '2019-02-14 18:11:50', '0.03']
['AAAA', '20190213', 'WAITING', 'job_name4', 'None', 'None', '0']
У меня есть список результатов БД, как указано выше, записи 4,5 находятся в часовом поясе UTC и являются строками
def save_jobs_to_file(jobs_info, filename):
'''save jobs to file
saved to file in re-arranged order: 1 - 0 - 3 - 3 - 4 - 5 - calculated run time
'''
from datetime import datetime
import pytz
tz = pytz.timezone('America/Los_Angeles')
utc = pytz.utc
logging.warning('Saving jobs to file {0}...'.format(filename))
f = open(filename, "w+")
for line in jobs_info:
#print(line)
for i in range(len(line)):
if line[i] == None:
pass
else:
#print(datetime.strptime(line[4],'%Y-%m-%d %H:%M:%S'))
print(type(line[4]),type(line[5]))
line[4] = datetime.strptime(line[4],'%Y-%m-%d %H:%M:%S')
line[4] = utc.localize(line[4])
line[4] = line[4].strftime('%Y-%m-%d %H:%M:%S')
line[5] = datetime.strptime(line[5],'%Y-%m-%d %H:%M:%S')
line[5] = utc.localize(line[5])
line[5] = line[5].strftime('%Y-%m-%d %H:%M:%S')
line = "|".join(line)
f.write(line)
f.write('\n')
logging.warning('Completed saving jobs to file {0}!'.format(filename))
Я пытаюсь изменить 4,5 записи для объектов даты и времени, используяФункция strptime и снова преобразование их в объект времени данных часового пояса pst и преобразование их строки снова с использованием strftime ().
Кроме того, мой список содержит None-значения в 4,5 записях, хотя я проверяю None-значения, но strptime выдает ошибку ниже.
(<type 'str'>, <type 'str'>)
Traceback (most recent call last):
File "./heart_latest_dev_get_pc_jobs.py", line 239, in <module>
main_program()
File "./heart_latest_dev_get_pc_jobs.py", line 222, in main_program
save_jobs_to_file(enhanced_jobs,filename)
File "./heart_latest_dev_get_pc_jobs.py", line 104, in save_jobs_to_file
line[4] = datetime.strptime(line[4],'%Y-%m-%d %H:%M:%S')
File "/usr/lib64/python2.7/_strptime.py", line 332, in _strptime
(data_string, format))
ValueError: time data 'None' does not match format '%Y-%m-%d %H:%M:%S'
Я новичок в Python,Я рад, что сделал это частью работы, но я не могу понять, что я делаю неправильно, хотя я передаю строку в strptime и проверяю None Values.
В соответствии с рекомендациями @John Anderson
Надеюсь, я правильно выполнил то, что он предложил, но все еще получаю ту же ошибку:
Edit(1):
def save_jobs_to_file(jobs_info, filename):
'''save jobs to file
saved to file in re-arranged order: 1 - 0 - 3 - 3 - 4 - 5 - calculated run time
'''
from datetime import datetime
import pytz
tz = pytz.timezone('America/Los_Angeles')
utc = pytz.utc
logging.warning('Saving jobs to file {0}...'.format(filename))
f = open(filename, "w+")
for line in jobs_info:
#if line[0] != None:
for i in range(len(line)):
if line[0] != None:
#print(datetime.strptime(line[4],'%Y-%m-%d %H:%M:%S'))
#print(line[0])
#print(type(line[4]),type(line[5]))
line[4] = datetime.strptime(line[4],'%Y-%m-%d %H:%M:%S')
line[4] = utc.localize(line[4])
line[4] = line[4].strftime('%Y-%m-%d %H:%M:%S')
line[5] = datetime.strptime(line[5],'%Y-%m-%d %H:%M:%S')
line[5] = utc.localize(line[5])
line[5] = line[5].strftime('%Y-%m-%d %H:%M:%S')
line = "|".join(line)
f.write(line)
f.write('\n')
logging.warning('Completed saving jobs to file {0}!'.format(filename))
Ошибка после редактирования (1):
Traceback (most recent call last):
File "./heart_latest_dev_get_pc_jobs.py", line 240, in <module>
main_program()
File "./heart_latest_dev_get_pc_jobs.py", line 223, in main_program
save_jobs_to_file(enhanced_jobs,filename)
File "./heart_latest_dev_get_pc_jobs.py", line 103, in save_jobs_to_file
line[4] = datetime.strptime(line[4],'%Y-%m-%d %H:%M:%S')
File "/usr/lib64/python2.7/_strptime.py", line 332, in _strptime
(data_string, format))
ValueError: time data 'None' does not match format '%Y-%m-%d %H:%M:%S'
*****Any help would be much appriciated :)*****