在 Python 中获取文件大小、创建日期和修改日期
Get file size, creation date and modification date in Python
我需要获取文件信息(路径、大小、日期等)并将其保存在 txt 中,但我不知道在哪里或如何做。
这是我的:
ruta = "FolderPath"
os.listdir(path=ruta)
miArchivo = open("TxtPath","w")
def getListOfFiles(ruta):
listOfFile = os.listdir(ruta)
allFiles = list()
for entry in listOfFile:
fullPath = os.path.join(ruta, entry)
if os.path.isdir(fullPath):
allFiles = allFiles + getListOfFiles(fullPath)
else:
allFiles.append(fullPath)
return allFiles
listOfFiles = getListOfFiles(ruta)
for elem in listOfFiles:
print(elem)
print("\n")
miArchivo.write("%s\n" % (elem))
miArchivo.close()
输出是(只有路径,没有其他信息):
我想要的是:
V:1111122222223333333444444455555555666666\Folder\File名称--尺寸--修改日期等
我认为您可能希望为此使用 scandir
而不是 listdir
:
for item in os.scandir(my_path):
print(item.name, item.path, item.stat().st_size, item.stat().st_atime)
您还需要检查 here 以获取有关适当呼叫的更多详细信息(您正在寻找的时间和大小)。 (os.scandir 是在 python 3.6 中添加的)
https://docs.python.org/2.7/library/os.path.html#module-os.path
os.path.getsize(path) # size in bytes
os.path.ctime(path) # time of last metadata change; it's a bit OS specific.
这是对您的程序的重写。我这样做了:
- 使用 autopep8 重新格式化以提高可读性。 (你可以安装它来美化你的代码。但是像 PyCharm 社区版这样的 IDE 可以帮助你做同样的事情,除了帮助你完成代码和 GUI 调试器。)
- 使您的
getListofFiles()
return 成为元组列表。每个元素都包含三个元素;文件名、大小和文件的时间戳,这似乎是所谓的纪元时间(自 1970 年以来以秒为单位的时间;您将必须阅读有关日期和时间的 python 文档)。
- 元组以 .csv 样式格式写入您的文本文件(但请注意,有一些模块可以以更好的方式执行相同操作)。
重写代码:
import os
def getListOfFiles(ruta):
listOfFile = os.listdir(ruta)
allFiles = list()
for entry in listOfFile:
fullPath = os.path.join(ruta, entry)
if os.path.isdir(fullPath):
allFiles = allFiles + getListOfFiles(fullPath)
else:
print('getting size of fullPath: ' + fullPath)
size = os.path.getsize(fullPath)
ctime = os.path.getctime(fullPath)
item = (fullPath, size, ctime)
allFiles.append(item)
return allFiles
ruta = "FolderPath"
miArchivo = open("TxtPath", "w")
listOfFiles = getListOfFiles(ruta)
for elem in listOfFiles:
miArchivo.write("%s,%s,%s\n" % (elem[0], elem[1], elem[2]))
miArchivo.close()
现在它这样做了。
my-MBP:verynew macbookuser$ python verynew.py; cat TxtPath
getting size of fullPath: FolderPath/dir2/file2
getting size of fullPath: FolderPath/dir2/file1
getting size of fullPath: FolderPath/dir1/file1
FolderPath/dir2/file2,3,1583242888.4
FolderPath/dir2/file1,1,1583242490.17
FolderPath/dir1/file1,1,1583242490.17
my-MBP:verynew macbookuser$
要解释日期,请使用 。基于 YamiOmar88 的出色回答:
import os
import datetime
def ts_to_dt(ts):
return datetime.datetime.fromtimestamp(ts)
for item in os.scandir(my_path):
print(item.name, item.path, item.stat().st_size, ts_to_dt(item.stat().st_atime))
我需要获取文件信息(路径、大小、日期等)并将其保存在 txt 中,但我不知道在哪里或如何做。
这是我的:
ruta = "FolderPath"
os.listdir(path=ruta)
miArchivo = open("TxtPath","w")
def getListOfFiles(ruta):
listOfFile = os.listdir(ruta)
allFiles = list()
for entry in listOfFile:
fullPath = os.path.join(ruta, entry)
if os.path.isdir(fullPath):
allFiles = allFiles + getListOfFiles(fullPath)
else:
allFiles.append(fullPath)
return allFiles
listOfFiles = getListOfFiles(ruta)
for elem in listOfFiles:
print(elem)
print("\n")
miArchivo.write("%s\n" % (elem))
miArchivo.close()
输出是(只有路径,没有其他信息):
我想要的是: V:1111122222223333333444444455555555666666\Folder\File名称--尺寸--修改日期等
我认为您可能希望为此使用 scandir
而不是 listdir
:
for item in os.scandir(my_path):
print(item.name, item.path, item.stat().st_size, item.stat().st_atime)
您还需要检查 here 以获取有关适当呼叫的更多详细信息(您正在寻找的时间和大小)。 (os.scandir 是在 python 3.6 中添加的)
https://docs.python.org/2.7/library/os.path.html#module-os.path
os.path.getsize(path) # size in bytes
os.path.ctime(path) # time of last metadata change; it's a bit OS specific.
这是对您的程序的重写。我这样做了:
- 使用 autopep8 重新格式化以提高可读性。 (你可以安装它来美化你的代码。但是像 PyCharm 社区版这样的 IDE 可以帮助你做同样的事情,除了帮助你完成代码和 GUI 调试器。)
- 使您的
getListofFiles()
return 成为元组列表。每个元素都包含三个元素;文件名、大小和文件的时间戳,这似乎是所谓的纪元时间(自 1970 年以来以秒为单位的时间;您将必须阅读有关日期和时间的 python 文档)。 - 元组以 .csv 样式格式写入您的文本文件(但请注意,有一些模块可以以更好的方式执行相同操作)。
重写代码:
import os
def getListOfFiles(ruta):
listOfFile = os.listdir(ruta)
allFiles = list()
for entry in listOfFile:
fullPath = os.path.join(ruta, entry)
if os.path.isdir(fullPath):
allFiles = allFiles + getListOfFiles(fullPath)
else:
print('getting size of fullPath: ' + fullPath)
size = os.path.getsize(fullPath)
ctime = os.path.getctime(fullPath)
item = (fullPath, size, ctime)
allFiles.append(item)
return allFiles
ruta = "FolderPath"
miArchivo = open("TxtPath", "w")
listOfFiles = getListOfFiles(ruta)
for elem in listOfFiles:
miArchivo.write("%s,%s,%s\n" % (elem[0], elem[1], elem[2]))
miArchivo.close()
现在它这样做了。
my-MBP:verynew macbookuser$ python verynew.py; cat TxtPath
getting size of fullPath: FolderPath/dir2/file2
getting size of fullPath: FolderPath/dir2/file1
getting size of fullPath: FolderPath/dir1/file1
FolderPath/dir2/file2,3,1583242888.4
FolderPath/dir2/file1,1,1583242490.17
FolderPath/dir1/file1,1,1583242490.17
my-MBP:verynew macbookuser$
要解释日期,请使用 。基于 YamiOmar88 的出色回答:
import os
import datetime
def ts_to_dt(ts):
return datetime.datetime.fromtimestamp(ts)
for item in os.scandir(my_path):
print(item.name, item.path, item.stat().st_size, ts_to_dt(item.stat().st_atime))