Получить размер файла, дату создания и дату модификации в Python - PullRequest
0 голосов
/ 03 марта 2020

Мне нужно получить информацию о файле (путь, размер, даты и т. Д. c) и сохранить его в текстовом формате, но я не знаю, где и как это сделать.

Это то, что я иметь:

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 \ 222222222 \ 333333333 \ 444444444 \ 5555555555 \ 66666666 \ Папка \ Имя файла - размер - дата изменения и т. Д.

Ответы [ 2 ]

2 голосов
/ 03 марта 2020

Я думаю, что вы можете использовать scandir вместо listdir для этого:

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

Вы также можете проверить здесь для получения более подробной информации относительно соответствующие звонки (для нужного вам времени и размера).

1 голос
/ 03 марта 2020

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 для лучшей читаемости. (Это то, что вы можете установить для предварительного кодирования вашего кода. Но IDE, такие как PyCharm Community Edition, могут помочь вам сделать то же самое, в дополнение к дополнению кода и GUI отладчику.)
  2. Сделано, чтобы ваш getListofFiles() вернул список кортежей. Есть три элемента в каждом; имя файла, размер и временная метка файла, которая, по-видимому, является так называемой эпохой (время в секундах с 1970 года; вам нужно будет go - 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$
...