如何解决在 Windows 10 上从 Python 获取准确的文件创建日期
我正在尝试使用 python 获取文件的准确(毫秒分辨率)创建日期。
在 Window 上获得准确创建日期的方法是使用 wmic。 所以我准备了一个简单的shell命令来读取创建日期:
wmic datafile where name="C:\\Users\\Public\\test.txt" get creationdate | findstr /brc:[0-9]
在 Win10 上通过 CMD shell 运行正常(如果文件在那里) 然后我尝试使用子进程从 python 运行相同的命令:
import subprocess
from subprocess import check_output,STDOUT,CalledProcessError
cmd = 'wmic datafile where name="C:\\Users\\Public\\test.txt" get creationdate | findstr /brc:[0-9]'
proc = subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True)
(out,err) = proc.communicate()
print( "program output:",out)
try:
o = check_output(cmd,stderr=STDOUT,shell=True)
returncode = 0
except CalledProcessError as ex:
o = ex.output
returncode = ex.returncode
if returncode != 1: # some other error happened
raise
finally:
print(o)
但我收到了同样的错误信息:
解决方法
import subprocess
from subprocess import check_output,STDOUT,CalledProcessError
cmd = 'wmic datafile where name="C:\\\\Users\\\\Public\\\\test.txt" get creationdate | findstr /brc:[0-9]'
proc = subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True)
(out,err) = proc.communicate()
print( "program output:",out.decode().rstrip())
out.decode().rstrip()
返回一个 string,类似于 '20210113222350.636280+060'
。
说明:
- 转义 Windows 路径中的所有
\
(Reverse Solidus)。 - 检查返回值类型:
type(out)
==><class 'bytes'>
;将其解码为字符串。 - 使用方法
rstrip()
去除所有尾随空格。
注意:import os; os.path.getctime("C:\\Users\\Public\\test.txt")
返回一个 float 值 1610573030.6362805
,这是一个纪元时间格式,恕我直言(GMT Wednesday,13 January 2021 21:23:50.636
)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。