AttributeError:“str”对象没有属性“format”:Crontab

2024-10-01 07:16:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个cronjob设置,运行于格林尼治标准时间00:00每天。这个cronjob执行调用python脚本的shell脚本内部的python脚本将日志文件生成为输出shell脚本和python脚本位于unix框中的同一目录(/abc/logs/env/pqr/hvi/)。他们有777个允许。现在,当我从这个位置运行shell脚本(/abc/logs/env/pqr/hvi/)时,它执行良好,python脚本在内部被调用并生成日志文件。但是当通过cronjob执行时,输出文件没有生成,我得到一条错误消息,说“AttributeError:'str'object has no attribute'format'” 当我做一个哪个python我得到:somelocation/./thirdparty/python/2.6/bin/python 所以我认为我使用的是python2.6,它支持.format操作。 我的猜测是:

  1. 我在cronjob中添加了Python解释器问题:

    PYTHONPATH=/../../../thirdparty/python/2.6/bin/python 路径=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

但运气不好

  1. Python版本问题,因为它可能不支持datetime的“.format”函数。但是我想我使用的是Python2.6(Python2.6是Python2.6),它支持datetime函数。在

不知道问题出在哪里。谁能帮忙吗? 提前谢谢。在

Cron作业看起来是:

PYTHONPATH =/cs/../../thirdparty/python/2.6/bin/python
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
00 00 * * 2,3,4,5,6  /abc/logs/env/pqr/hvi/calculate_latency.sh  > /var/tmp/hvi_latency.log 2>&1

Shell脚本如下:

^{pr2}$

python脚本如下:

import os
import sys
import time
import math
import re
from datetime import datetime
from datetime import timedelta

def get_timestamp():
import datetime
n = datetime.datetime.now()
# print n gives : 2016-03-25 04:08:43.123162
result = '{0:04}-{1:02}-{2:02}_{3:02}{4:02}{5:02}'.format(n.year,n.month,n.day,n.hour,n.minute,n.second)
# print result gives :2016-03-25_040843
return result

错误消息是:

[..... tmp]$ tail -100 hvi_latency.log 
2016-03-25 05:31:43.806450
Traceback (most recent call last):
File "/abc/logs/env/pqr/hvi/HVI_Delay_analyizer_BY_HOUR_usingDatetime.py", line 119, in ?
START_TIME = get_timestamp()   
File "/abc/logs/env/pqr/hvi/HVI_Delay_analyizer_BY_HOUR_usingDatetime.py", line 18, in get_timestamp
result = '{0:04}-{1:02}-{2:02}_{3:02}{4:02}{5:02}'.format(n.year,n.month,n.day,n.hour,n.minute,n.second)
AttributeError: 'str' object has no attribute 'format'

Tags: importenv脚本formatdatetimebinusrresult