Python宝典第十章:系统编程

本文介绍如何使用Python的win32api模块操作Windows注册表,包括打开、读取和设置注册表键值等,并展示了如何利用OS模块进行文件和目录的操作。

Python虽然是脚本语言,但是借助扩展后同样可以进行体系级别的程序编写。

通过使用win32api模块,可以方便的访问注册表对其进行打开关闭等等。。。(需要自己下载pywin32)

<span style="font-size:14px;">from win32api import *
from win32con import *
name="SOFTWARE\\Python\\PythonCore\\3.4\\Installpath"
key=RegOpenKey(HKEY_LOCAL_MACHINE, name, 0, KEY_ALL_ACCESS) #key为打开的句柄
RegQueryValue(key,'') #'F:\\rantom\\python3.4\\'
RegCloseKey(key)</span>

操作注册表类:

  • 打开注册表:RegOpenKey[Ex](key, subkey, reserved, sam) Key为5个基本型,subkey子项,reserved必须为0, sam进行的操作
  • 关闭注册表:RegCloseKey(key)
  • 读取项值:RegQueryValue(key, subkey)          RegQueryValueEx(key, valuename)
  • 查询项的基本信息:RegQueryInfoKey(key) 返回子项数目,项值数目,最后一次修改时间
  • 设置项值:RegSetValueEx(key, valueName, reserved, type, value)         RegSetValue(key, subkey, type, value)
  • 添加删除项:RegCreateKey(key, subkey)        RegDeleteKey(key, subkey)
# -*- coding:utf-8 -*-
# file: pyAdd2AutoRun.py
#
from win32api import *
from win32con import *
name="SetIE"
path="F:\\rantom\\python3.4\\SetIE.py"
KeyName="Sofware\\MicroSoft\\Windows\\CurrentVersion\\Run"
try:
    key=RegOpenKey(HKEY_CURRENT_USER,\
                   KeyName,\
                   0,\
                   KEY_ALL_ACCESS)
    RegSetValueEx(key, name, 0, REG_SZ, path)
    RegCloseKey(key)
except:
    print("error")
print("added that!")

# -*- coding:utf-8 -*-
# file: pySetIE.py
#
from win32api import *
from win32con import *
from datetime import *
from string import *
keyname="Sofware\\MicroSoft\\Internet Explorer\\Main"
page="www.baidu.com"
today=date.today()
title=today.strftime("%Y")+"年"+today.strftime("%m")+"月"+today.strftime("%d")+"日"
try:
    key=RegOpenKey(HKEY_CURRENT_USER,\
                   keyname,\
                   0,\
                   KEY_ALL_ACCESS)
    StartPage=RegQueryValueEx(key, "Start Page")
except:
    print("error")
else:
    if StartPage[0]!=page:
        RegSetValueEx(key, "Start Page", 0, REG_SZ, page)
    RegSetValueEx(key, "Window Title", 0, REG_SZ, title)
    RegCloseKey(key)

文件和目录:OS模块
  • 当前路径:getcwd()
  • 获得目录中内容:listdir(path)
  • 创建目录:mkdir(path)
  • 删除目录:rmdir(path) 目录必须存在且为空
  • 判断是否是目录:path.isdir(path)      path.isfile(path)
# -*- coding:utf-8 -*-
# file: pyBatchRename.py
#
from os import *
perfix="Python"
length=2
base1
format="mdb"
def PadLeft(str, num, padstr):
    stringlength=len(str)
    n=num-stringlength
    if n>=0:
        str=padstr*n+str
    return str
print("the files in %s will be renamed" % os.getcwd())
input=input("press y to continue\n")
if input.lower()!="y":
    exit()
filenames=os.listdir(os.curdir)
i=base-1
for filename in filenames:
    i=i+1
    if filename!="pyBatchRename.py" and path.isfile(filename):
        name=str(i)
        name=PadLeft(name, length, '0')
        t=filename.split('.')
        m=len(t)
        if format=='':
            rename(filename, perfix+name+'.'+t[m-1])
        else:
            if t[m-1]==format:
                rename(filename, perfix+name+'.'+t[m-1])
            else:
                i=i-1
    else:
        i=i-1

代码框架生成器:
# -*- coding:utf-8 -*-
# file: pyMakeCode.py
#
from os import *
from sys import *
from datetime import *
py="""#--------------------------------------------
# To:
#--------------------------------------------
# By:
#--------------------------------------------
"""
if path.isfile(argv[1]):
    print("%s already exist!" % argv[1])
    exit()
file=open(argv[1],'w')
today=date.today()
date=today.strftime('%Y')+'-'+today.strftime('%m')+'-'+today.strftime('%d')
filetypes=str.split(argv[1],'.')
length=len(filetypes)
filetype=filetypes[length-1]
if tiletypes=="py":
    print("use python mode")
    file.writelines("# -*- coding:utf-8 -*-")
    file.write('\n')
    file.writelines("# file: "+argv[1])
    file.write('\n')
    file.write(py)
    file.write("# Date: "+date)
    file.write('\n')
    file.write("#--------------------------------------------")
else:
    print("just create %s" % argv[1])
file.close

生产可执行文件(略。。。)
py2exe或者cx_freeze

运行其他程序:
os.system(command): command相当于在cmd里面打的命令
os.system('nodepad')
os.system('nodepad python.txt')

使用shellexecute函数运行程序(win32api模块),相当于在资源管理器中双肩文件图标,系统会打开项羽的应用程序执行操作
ShellExecute(hwnd, op, file, params, dir, bShow)

为了控制通过脚本运行的程序,可以使用win32process模块中的CreateProcess()函数创建一个运行响应程序的进程。

ctypes调用kernel32.dll的函数(略。。。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值