获取Python中的文件大小、创建日期和修改日期

2024-06-26 00:12:13 发布

您现在位置: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()

输出为(仅路径,无其他信息): enter image description here

我想要的是: V:\1111111\2222222\333333\4444444\555555\66666666\Folder\File name--size--modification date等


Tags: pathin路径信息foroslistdirentry
3条回答

要解释日期,请使用https://stackoverflow.com/a/52858040/11262633。基于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))

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.

这是你的程序的重写。我这样做:

  1. 使用autopep8重新格式化以提高可读性。(你可以安装它来美化你的代码和代码。但是像PyCharm Community Edition这样的IDE除了帮助你完成代码和GUI调试器外,还可以帮助你做到这一点。)
  2. 使getListofFiles()返回元组列表。每一个元素中有三个元素;文件的文件名、大小和时间戳,这似乎就是所谓的纪元时间(自1970年以来的时间单位为秒;您必须阅读有关日期和时间的python文档)
  3. 元组是以.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$

我认为您可能希望使用scandir而不是listdir来实现以下目的:

for item in os.scandir(my_path):
     print(item.name, item.path, item.stat().st_size, item.stat().st_atime)

您还需要检查here以获得有关适当调用的更详细信息(查找时间和大小)

相关问题 更多 >