如何在 Windows 上访问文件的属性?
上次我问了一个类似的问题,但那是关于 svn 相关的版本控制信息。 现在我想知道如何查询有关例如的Windows“文件版本”属性。 一个dll。 我也关注了 wmi 和 win32file 模块,但没有成功。
Last time I asked a similar question but that was about svn related versioning info. Now I am wondering how to query windows "File version" attribute about eg. a dll. I payed attention to wmi and win32file modules as well without success.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
这是一个将所有文件属性作为字典读取的函数:
Here is a function which reads all file attributes as a dictionary:
最好添加一个 try/ except 以防文件没有版本号属性。
filever.py
yourscript.py:
干杯!
Better to add a try/except in case the file has no version number attribute.
filever.py
yourscript.py:
Cheers!
您可以使用 https://github.com/mhammond/pywin32< 中的
pyWin32
模块/a>:You can use the
pyWin32
module from https://github.com/mhammond/pywin32:这是一个也可以在非 Windows 环境中使用的版本,使用 pefile 模块:
Here is a version that also works in non-Windows environments, using the pefile module:
我发现唯一的跨平台答案(使用
pefile
)找不到我正在寻找的版本字符串,这是“查看属性”的“详细信息”选项卡中显示的版本字符串Windows 上的 .DLL 文件。 但是,此代码基于pefile
中的dump_info()
函数,能够找到这些属性,其中包括原始文件名、版权、公司名称以及文件和产品版本。如果它们不是使用 UTF-8 编码的,您可能需要将
encoding
替换为不同的编码。I found that the only cross-platform answer (using
pefile
) couldn't find the version string I was looking for, which is the one shown in the 'Details' tab of the 'View properties' of a .DLL file on Windows. However, this code, based on thedump_info()
function inpefile
, is able to find those attributes, which include original filename, copyright, company name, and file and product versions.You may need to replace
encoding
with a different encoding if they are not encoded using UTF-8.这是马什答案的工作版本,仅使用标准库。 像
get_version_string(file, "FileVersion")
一样使用它。 请参阅 VerQueryValueW()获取有效的版本字符串。Here's a working version of marsh's answer, only using the standard library. Use it like
get_version_string(file, "FileVersion")
. See VerQueryValueW() for the valid version strings.我在“timgolden”网站找到了这个解决方案。 工作正常。
I found this solution at "timgolden" site. Works fine.
这是一个不需要任何额外库的版本。 我无法像每个人建议的那样使用 win32api:
来自: https ://mail.python.org/pipermail//python-list/2006-November/402797.html
仅复制到此处,以防原件丢失。
像这样使用:
Here is a version that does not require any additional libraries. I could not use win32api like everyone had suggested:
From: https://mail.python.org/pipermail//python-list/2006-November/402797.html
Only copied here in case the original goes missing.
Used like so: