从 Python Windows 10 获取准确的文件创建日期

Get accurate file creation date from Python on Windows 10

我正在尝试使用 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)

但是我得到了同样的错误信息:

Node - username ERROR: Description = Invalid query

关于如何获取有关修复错误的更多信息,您有什么建议吗?

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() returns 一个 字符串,类似于 '20210113222350.636280+060'.

解释:

  1. 转义Windows路径中的所有\反向Solidus)。
  2. 检查返回值类型:type(out) ==> <class 'bytes'>;将其解码为字符串。
  3. 使用方法 rstrip().
  4. 去除所有尾随空格

注意:import os; os.path.getctime("C:\Users\Public\test.txt") returns 一个 float1610573030.6362805 这是纪元时间格式,恕我直言(GMT Wednesday, 13 January 2021 21:23:50.636 ).