Windows本地资源交互

  • os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口
  • sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境

运行信息

  • 系统平台sys.platform
  • 解释器版本信息sys.version sys.version_info
  • 当前Unicode实现所使用的默认字符串编码名称sys.getdefaultencoding()
  • 命令行传递参数sys.argv
  • sys.getrefcount()对象引用计数,返回的计数通常比预期的多一,因为它包括了作为getrefcount()参数的这一次临时引用
  • sys.modules将模块名称映射到已加载的模块。可以操作该字典来强制重新加载模块,或是实现其他技巧。但是,替换的字典不一定会按预期工作,并且从字典中删除必要的项目可能会导致Python崩溃
  • sys.path字符串组成的列表,用于指定模块的搜索路径。初始化自环境变量PYTHONPATH,再加上一条与安装有关的默认路径
  • 运行环境变量os.environ

进程管理

  • 模拟传统的UNIX函数发信号给进程(UNIX平台上有效)os.kill(os.getpid(), signal.SIGILL)
  • os.fork()无法在Windows系统中使用,父进程中os.fork()返回子进程pid,子进程中os.fork()返回0
  • os.system通过fork一个子进程,然后该子进程执行命令,阻塞等待子进程结束,返回命令执行结果的返回值
  • os.popen创建一个管道,通过fork一个子进程,然后该子进程执行命令

文件操作

  • 拼接路径os.path.join(dir, path)

  • 新建文件夹os.makedirs(os.path.dirname(file_full_path))

  • 删除文件夹os.rmdir(os.path.dirname(file_full_path))

  • 判断文件夹存在os.path.exists(os.path.dirname(file_full_path))

  • 目录文件列表os.listdir(os.path.dirname(file_full_path))

  • 判断资源类型(是否文件)os.path.isfile(file_full_path)

  • 删除文件os.remove(file_full_path)

  • 移动(重命名)os.rename(src_file_full_path, des_file_full_path)

ini文件解析

  • configparser模块
import configparser


def doini():
    filename = "test.ini"

    # 加载ini
    iniFile = configparser.ConfigParser()
    iniFile.read(filename)

    # 添加或更新节点
    section, key, value = "request", "timeout", "30"
    if not iniFile.has_section(section):
        iniFile.add_section(section)
    iniFile.set(section, key, value)

    # 删除节点
    section, key, value = "request", "retry", "5"
    if iniFile.has_section(section):
        if iniFile.has_option(section, key):
            iniFile.remove_option(section, key)
    if len(iniFile.options(section)) == 0:
        iniFile.remove_section(section)

    # 回写ini
    iniFile.write(open(filename, "w"))


if __name__ == "__main__":
    doini()

注册表操作

  • winreg模块
import winreg


def doreg(regList):
    # root
    root, path = winreg.HKEY_CURRENT_USER, r"ttt\www"
    reg = winreg.CreateKey(root, path)

    try:
        # 添加或更新
        name, value = "host", "sss"
        winreg.SetValueEx(reg, name, 0, winreg.REG_SZ, value)

        # 删除
        name = "port"
        for i in range(0, winreg.QueryInfoKey(reg)[1]):
            if (winreg.EnumValue(reg, i)[0] == name):
                winreg.DeleteValue(reg, name)
                break
    except Exception as e:
        raise e
    finally:
        winreg.CloseKey(reg)
上一篇:转-CSRF——攻击与防御


下一篇:Dynamics CRM2016 时间字段属性中的新增行为