Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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中提取文件的创建时间_Python_Python 3.x_File_Time_Minute - Fatal编程技术网

在Python中提取文件的创建时间

在Python中提取文件的创建时间,python,python-3.x,file,time,minute,Python,Python 3.x,File,Time,Minute,我需要提取文件的创建时间。但不是日期。作为在上创建的文件的示例: 2018年7月31日星期二22:48:58 代码应打印为1368(结果:22小时*60+24分钟) 我得到了下面的程序,它工作得很好,但在我看来是丑陋的 导入操作系统,时间 created=time.ctime(os.path.getctime(filename))#示例结果:2018年7月31日星期二22:48:58 小时=整数(创建时间[11:13]) 分钟=int(创建时间[14:16]) 创建的分钟=小时*60+分钟 打印

我需要提取文件的创建时间。但不是日期。作为在上创建的文件的示例:

2018年7月31日星期二22:48:58

代码应打印为1368(结果:22小时*60+24分钟)

我得到了下面的程序,它工作得很好,但在我看来是丑陋的

导入操作系统,时间
created=time.ctime(os.path.getctime(filename))#示例结果:2018年7月31日星期二22:48:58
小时=整数(创建时间[11:13])
分钟=int(创建时间[14:16])
创建的分钟=小时*60+分钟
打印(创建的分钟)

由于我喜欢编写漂亮的代码,这里我的问题是:有没有更优雅的方法在Python中实现它?

使用正则表达式:

import os, time, re

time = time.ctime(os.path.getctime(filename))
hours, mins, secs = map(int, re.search(r'(\d{2}):(\d{2}):(\d{2})', time).groups())
minutes_created = hours*60+mins
minutes_created_fr = minutes_created + secs/60 # bonus with fractional seconds

您可以对实际的ctime结果使用模:

from pathlib import Path
p=Path('/tmp/file')
然后获取ctime结果并除去时间戳的时间部分以外的所有内容:

ctime_tod=p.stat().st_ctime % (60*60*24) # just the time portion
然后使用
divmod
获取分钟和秒数:

m, s = map(int, divmod(ctime_tod, 60))   # just minutes and seconds

m
将有文件创建的分钟部分和
s
秒部分。请注意,大多数操作系统上的时间戳将以UTC为单位,其中
时间。ctime
转换为本地时间。

您可以在分钟而不是秒内尝试这种方法。确切的“文件”是什么?它是一个文本吗?它只是一个文件的路径。只是一个注释,我试图为这个度量考虑一个用例,但我没有想到,这将为连续几天午夜附近创建的文件返回非常不同的值。这已经更好了。用例:我得到了一个将修改时间更新到现在的程序。因此,在文件夹的最后是未更新的文件,它们具有原始时间戳。因为它是会计,创建日期不会改变,只是时间。现在我正在写一个程序来处理丢失的文件。这在数学上是一个很好的解决方案。如果我能给你更多的分数,那么我会做的。不幸的是,我相信@fixmycode的解决方案对于没有经验的代码读者来说更具可读性。它不应该是24而不是26吗?@marcelsondereger:Doh!