从 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'
.
解释:
- 转义Windows路径中的所有
\
(反向Solidus)。
- 检查返回值类型:
type(out)
==> <class 'bytes'>
;将其解码为字符串。
- 使用方法
rstrip()
. 去除所有尾随空格
注意:import os; os.path.getctime("C:\Users\Public\test.txt")
returns 一个 float 值 1610573030.6362805
这是纪元时间格式,恕我直言(GMT Wednesday, 13 January 2021 21:23:50.636
).
我正在尝试使用 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'
.
解释:
- 转义Windows路径中的所有
\
(反向Solidus)。 - 检查返回值类型:
type(out)
==><class 'bytes'>
;将其解码为字符串。 - 使用方法
rstrip()
. 去除所有尾随空格
注意:import os; os.path.getctime("C:\Users\Public\test.txt")
returns 一个 float 值 1610573030.6362805
这是纪元时间格式,恕我直言(GMT Wednesday, 13 January 2021 21:23:50.636
).