在调试demon代码时,常会碰到一些模块无法导入的情况,这是因为好多模块不是Python的标准库,
而是demon安装目录下的库文件,所以学习demon源码的时候,要把这些库copy到同一个目录下,
才能顺利调试,最常用的库是run.py,这个库定义了一些app函数,以及运行系统,操作参数的设定。
举例:
#!/usr/bin/env pyton #coding:UTF-8 ''' Created on 2010-5-19 wxPython Demon 一个demon中的源程序。 简单介绍一下这种demon的注意事项 '''
import wx import os import sys
try: dirName = os.path.dirname(os.path.abspath(__file__)) except: dirName = os.path.dirname(os.path.abspath(sys.argv[0]))
sys.path.append(os.path.split(dirName)[0])
try: from agw import buttonpanel as bp except ImportError: # if it's not there locally, try the wxPython lib. import wx.lib.agw.buttonpanel as bp
import images import random # #中间省略N行........ #
if __name__ == '__main__': import sys,os import run run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:]) |
1..这个源程序用到了两个作者制作的模块,一个是run.py,一个是images.py。
要将这两个文件和你调试用的文件放一个目录,才能正常运行。
2..sys.argv[],是一记录参数的列表,sys.argv[0]是运行程序自身的文件名,
sys.argv[1:]是程序运行时所带的参数。举例说明:
命令行下运行如下命令:
C:\>python test.py -k -i --m |
此时
sys.argv[0]就是要运行的文件名:test.py
sys.argv[1:]就是所带的参数列表:-k -i --m
3..最后一行
run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:]) |
其中运行参数是个列表,列表的第一项是空字符串,表示要运行的程序在当前目录下,
如果不在当前目录,要用程序文件所在的路径替换空字符串。
os模块方法:
====================================================================
@1.)文件操作:
remove()/unlink() 删除文件
rename()/renames() 重命名文件
stat() 返回文件信息
symlink() 创建符号链接
utime() 更新时间戳
tmpfile() 创建并打开('w+b')一个临时文件
walk() 生成一个目录树下的所有文件名
@2.)目录/文件夹操作:
chdir()/fchdir() 改变当前工作目录/通过文件描述符改变
chroot() 改变当前进程的根目录
listdir() 列出指定目录下的文件
getcwd()/getcwdu() 返回当前工作目录/unicode模式的返回值
mkdir()/makedirs() 创建目录/创建多层目录
rmdir()/removedirs() 删除目录/删除多层目录
@3.)访问/权限:
access() 检验权限模式
chmod() 更改权限
chown()/lchown() 更改文件所有者,GroupID/同功能,不追踪lnk
umask() 设置默认权限
@4.)文件描述符操作:
open()
read()/write()
dup()/dup2() 复制文件描述符/将一个文件描述符复制到另一个
==================================================================
os.path路径名访问方法:
==================================================================
@1.)分割:
basename() 去掉目录名,返回文件名
dirname() 去掉文件名,返回目录名
join() 将分离的各部分重新组合成路径名
split() 返回(dirname(),basename())元组
splitdrive() 返回(drivename,pathname)元组
splitext() 返回(文件名,扩展名)元组
@2.)信息:
getatime() 返回最近访问的时间
getctime() 返回创建的时间
getmtime() 返回修改的时间
getsieze() 返回文件大小
@3.)查询判断:
exists() 指定路径(文件或目录)是否存在
isabs() 指定路径是否是绝对路径
isdir()
isfile()
islink()
ismount() 是否是挂载点
samefile() 俩路径是否指向同一文件
==================================================================