WinSys:Python Windows管理员工具包

winsys的Python项目详细描述


输入WinSys:pythonwindows管理员工具包。收藏 使用一致的方法,包装Windows API pywin32已经公开的调用,添加一些带有ctypes的调用,并将它们 一种Python般的感觉。这里没有你不能做的事 10分钟和一份pywin32和SDK文档。但都已经到了, 更像Python的感觉。在

文档可在:http://winsys.readthedocs.org/en/latest/index.html

设计原则

以下模块有指导性的设计原则 尽可能提供包装:

  • 使临时使用成为可能和容易(甚至有吸引力)
  • 为常见情况提供合理的默认值,始终允许更复杂的场景
  • 将所有常量放在一个位置,根据它们的API用法对它们进行分组
  • 在可用的情况下使用pywin32功能,并在需要时用ctypes补充它
  • 假设Python的最新版本(在2.6、2.7、3.2、3.3上测试)
  • 充分利用上下文管理器(带语句)
  • 使每个对象都能够干净地转储其内容及其子对象的内容
  • 维护对象方法,但提供方便的模块级功能
  • 对类有有用的工厂函数,可靠地接受字符串或对象参数

共同特征

winsys中的大多数对象都是核心的子类 提供合理的默认值并定义公共功能,如转储函数。 此外,许多模块都具有以下功能:

Python命名

这有点争议,但使用了相同的命名约定 在整个过程中,广泛遵循lowercase_with_underscores约定 在Python社区中采用。最普遍的例外是 在constants模块中,其中Windows常量保留 UPPERCASE_WITH_UNDERSCORESnames。在

模块级功能

而Python类被大量使用来包装函数驱动 windowsapi,很多功能都是作为模块级公开的 便利功能。例如,在fs模块中,fs.文件 课程提供fs.File.copy文件功能相同,但方法是公开的 在模块级别,如fs.复制。这样,你就不必实例化 一个或多个仅用于单个操作的对象。在

工厂功能

大多数类都有相应的工厂函数(通常 相同的名称在小写)试图更容易接受什么 它的参数是,并将它们转换为类的 拥有__init__方法。例如,主体类 初始值设定者期望PySID结构具有对应的主体 函数,该函数将使用Sid或用户名或组名,或无或现有 主体对象。在

倾倒

每个从核心派生的对象都有一个dump方法 用于显示其内部结构,可能递归地显示 有些结构本身就是WinSys对象。这是有意的 用于在翻译程序中方便查看的特殊用途,例如 从文件加载的安全结构。在

迭代器和生成器

在可能和有意义的地方,经常使用延迟迭代器 由发电机实现。这从fs模块开始,其中 成千上万的文件被查询以获取信息,但是 在整个方案中被普遍采用。在

上下文管理器

在有意义的地方,上下文管理器已经被使用,或者 或通过将对象定义为它自己的上下文管理器通过__enter____exit__方法实现。 上下文管理对象的示例包括邮筒和 <引用>安全。安全对象。修饰函数的示例包括 security.change_权限安全性.模拟函数。在

托多

显然,有很多事情要做。windowsapi是巨大的;甚至 它被pywin32暴露了,远远超过了我现在的需要和时间 处置。这个包的实施主要是由 Windows系统管理员在日常工作中的特殊需求。我的 目的是以类似的方式继续包装Windows功能, 但是如果有人有特殊需求,或者可以提供附加功能, 让我们听听吧。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java中的安卓字节[]操作   java如何使用SeleniumWebDriver自动弹出对话框窗口   运行单黄瓜JVM的java。来自Gradle的功能文件   在Java中使用JTA连接到SSH   eclipse为什么在从SVN签出Ant版本1.3时,Ant java项目本身有很多错误?   java如何获取撇号之间的字符串   java锁在单个线程上作为布尔信号量工作吗?   bluej我可以使用什么代码清除屏幕(java)?   java在单击JButton时更改JPanel图标   java将逗号分隔的字符串转换为不带中间容器的列表   java Flink:以集群模式加载资源文件   java删除多对多条目,同时将两个对象都保留在数据库中   将数组值向左移动