Получение всех свойств файла в Python - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь получить свойство файла (например, «Имя, Дата изменения», «Тип», «Размер» и т. Д. c ...) из файла в python. Свойство называется « SW, последний сохраненный с » (щелкните, например). Это свойство сообщает вам, с какой версией Solidworks была сохранена модель.

После некоторых исследований выясняется, что это свойство "Последний сохраненный с ПО" было добавлено в Windows Проводник путем регистрации файла .DLL (sldwinshellextu.dll).

Есть ли способ чтобы захватить это специфицированное c свойство файла с помощью некоторой функции python, например (file.getProperty («SW последний сохранен с»))?

Ответы [ 2 ]

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

Итак, я нашел способ сделать это с помощью другого поста, который я нашел:

import subprocess
newCOMObjectTxt = ("$path = 'PATH_TO_SLDPRT_FILE';"
         "$shell = New-Object -COMObject Shell.Application;"
         "$folder = Split-Path $path;"
         "$file = Split-Path $path -Leaf;"
         "$shellfolder= $shell.Namespace($folder);"
         "$shellfile = $shellfolder.ParseName($file);")
 swLastSavedWithIdx = None
 swFindLastSavedWithProp = subprocess.Popen (["powershell.exe", newCOMObjectTxt + \
        "0..500 | Foreach-Object { '{0} = {1}' -f $_, $shellfolder.GetDetailsOf($null, $_)}"],
        stdout = subprocess.PIPE)
  while True:
     line = swFindLastSavedWithProp.stdout.readline()
     if b"SW Last saved with" in line:
        swLastSavedWithIdx = int(line.split()[0])
        break
     if not line:
        break
  swLastSaveWithVersion = subprocess.Popen (["powershell.exe", newCOMObjectTxt + \
        "$shellfolder.GetDetailsOf($shellfile, %i)" %swLastSavedWithIdx], stdout = subprocess.PIPE)
  ver = str(swLastSaveWithVersion.stdout.readline(),'utf-8').strip()

По сути, я обнаружил, что вы можете получить все свойства файла с помощью нескольких Windows Команды Powershell. Мы пишем несколько быстрых команд в powershell, используя subprocess.Popen (), затем PIPE из STDOUT.

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

Чтобы получить доступ к свойствам файла или другой информации из файла SOLIDWORKS, не открывая файл непосредственно на SW, вы можете использовать «SwDocumentManager.dll». С помощью этого API вы можете использовать «GetDocument ()» для доступа к указанному файлу c и получения объекта ISwDMDocument. Используйте это, чтобы прочитать свойство «LastSavedDate» для получения вашей информации.

Информация об объекте для объекта ISwDMDocument: https://help.solidworks.com/2020/English/api/swdocmgrapi/SolidWorks.Interop.swdocumentmgr~SolidWorks.Interop.swdocumentmgr.ISwDMDocument_members.html

Общая информация о том, как использовать SwDocumentManager API: https://help.solidworks.com/2020/English/api/swdocmgrapi/HelpViewerDS.aspx?version=2020&prod=api&lang=English&path=swdocmgrapi%2fGettingStarted-swdocmgrapi.html&id=74236490007f4b5eb5ba233479f1e707

Но я ничего не знаю о python и о том, как использовать его на этом языке. Но, возможно, я мог бы указать вам в каком-то направлении.

...