Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在日志记录中使用自UNIX纪元起的秒数作为日期格式_Python_Logging_Time_Epoch - Fatal编程技术网

Python 在日志记录中使用自UNIX纪元起的秒数作为日期格式

Python 在日志记录中使用自UNIX纪元起的秒数作为日期格式,python,logging,time,epoch,Python,Logging,Time,Epoch,这些文件的内容如下: datefmt-使用用户接受的指定日期/时间格式 但是,如果我看一下的文档,这里甚至没有提到UNIX Epoch时间戳 更新:如果我使用的是的手册页中所述的%s,则它适用于Linux,但不适用于Windows import time time.strftime('%s') 导致 ValueError: Invalid format string 因此,我正在寻找一种平台无关的方法,在日志记录中使用自UNIX纪元以来的秒数作为日期格式。使用asctime确实不可能做到这

这些文件的内容如下:

datefmt
-使用用户接受的指定日期/时间格式

但是,如果我看一下的文档,这里甚至没有提到UNIX Epoch时间戳


更新:如果我使用的是的手册页中所述的
%s
,则它适用于Linux,但不适用于Windows

import time
time.strftime('%s')
导致

ValueError: Invalid format string

因此,我正在寻找一种平台无关的方法,在日志记录中使用自UNIX纪元以来的秒数作为日期格式。

使用
asctime
确实不可能做到这一点,因为
strftime
关于支持的格式字符串的行为取决于平台

文档中的“
strftime()
strftime()
行为”一节中有一段关于这一点的内容:

由于Python调用平台C库的
strftime()。要查看您的平台上支持的全套格式代码,请参阅strftime(3)文档


但是,不管
asctime
,您仍然可以在日志格式字符串中使用自UNIX纪元以来的秒数。还有另一个名为“创建的<代码>属性”

%(已创建)f
-创建日志记录的时间(由
Time.Time()返回)


由于
time.time()
在Linux和Windows上都能工作,所以您可以使用
created
而不是日志格式字符串中的
asctime

在ANSI C中使用
strftime()
无法获得Unix epoch格式(毕竟,这是一种输入)。 类似地,在Python中,不能将此功能作为跨平台使用

但是,您可以利用这样一个事实,即在C和Python中,非特殊字符都通过strftime()
。 因此,您可以使用以下解决方法——诚然,这些方法相当丑陋,但非常有效:

导入时间
time.strftime(str(time.time()))
或者更准确地说:

time.strftime(str(int(time.time()))
time.strftime(str(int(time.time()))==time.strftime(“%s”)
#真的

time.time()
以浮点数形式返回自历元以来的时间(以秒为单位)。顺便说一句,在
time.strftime('%S')
中使用大写字母S。Python中的函数不支持小写的
%S
格式指令(大写的
%S
不是您想要的秒数)。如文档中所述:“在某些平台上可能支持其他指令,但只有此处列出的指令具有ANSI C标准化的含义”-我认为这是一种冗长的说法“可能与平台无关”这是因为在内部,无论目标平台是什么,它都是使用C运行时库实现的。如果需要,这种方法允许使用特定于平台的格式,但是如果您想要最大的可移植性,则需要坚持ANSI C标准中的内容。我不是日志记录专家,但如果有什么方法可以实现您想要的功能,我也不会感到惊讶。@finefoot:因为重新实现strftime将非常昂贵,与同一平台上的其他程序不兼容,并且在某些情况下可能表现出与其他程序不同的行为。任何认为
%s
应该是C语言的一部分或Windows实现的一部分的人,都可以分别与WG14或Microsoft对话;这样的改变不像看上去那么不可能。