sys模块,os模块
sys模块
sys.argv # 命令行参数List,第一个元素是程序本身路径 print(sys.argv) >> ['C:/Anaconda3/Scripts/ipython-script.py'] sys.version # 获取Python解释程序的版本信息 print(sys.version) >> '3.6.1 |Anaconda custom (64-bit)| (default, May 11 2017, 13:25:24) [MSC v.1900 64 bit (AMD64)]' sys.maxint # 系统最大的Int值,只在python2中有,python3中int的大小不再受到限制 print sys.maxint >> 2147483647 sys.path # 返回python模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 print(sys.path) >> ['', 'C:\\Anaconda3\\Scripts', 'C:\\Anaconda3\\python36.zip', 'C:\\Anaconda3\\DLLs', 'C:\\Anaconda3\\lib', 'C:\\Anaconda3', 'C:\\Anaconda3\\lib\\site-packages', 'C:\\Anaconda3\\lib\\site-packages\\Sphinx-1.5.6-py3.6.egg', 'C:\\Anaconda3\\lib\\site-packages\\win32', 'C:\\Anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Anaconda3\\lib\\site-packages\\Pythonwin', 'C:\\Anaconda3\\lib\\site-packages\\setuptools-27.2.0-py3.6.egg', 'C:\\Anaconda3\\lib\\site-packages\\IPython\\extensions', 'C:\\Users\\鑫。\\.ipython'] sys.platform # 返回操作系统平台名称 print(sys.platform) >> 'win32' sys.exit(n) # 退出程序,正常退出时exit(0) # system.exit(0):正常退出,程序正常执行结束退出 # system.exit(1):是非正常退出,就是说无论程序正在执行与否,都退出, sys.stdin # 输入相关 # sys.stdin.readline() # 接受输入字符串,和input差不多 print(sys.stdin.readline()) In [1]:abc123 Out [1]:abc123 sys.stdout # 输出相关 sys.stderror # 错误相关
示例:进度条
1 import sys 2 import time 3 4 5 def progress_bar(num, total): 6 rate = float(num) / float(total) 7 rate_num = int(rate * 100) 8 r = '\r%d%%' % (rate_num, ) # 字符串是 %s;整数 %d;浮点数%f 9 sys.stdout.write(r) # 打印 10 sys.stdout.flush() # 刷新 11 12 13 if __name__ == '__main__': 14 for i in range(0, 100): 15 time.sleep(0.1) 16 progress_bar(i, 100)
OS模块
os.getcwd() # 获取当前工作目录,即当前python脚本工作的目录路径 print(os.getcwd()) >> 'C:\\Users\\鑫。\\Documents' os.chdir("dirname") # 改变当前脚本工作目录;相当于shell下cd os.chdir("Adobe") print(os.getcwd()) >> 'C:\\Users\\鑫。\\Documents\\Adobe' os.curdir # 返回当前目录: ('.') os.pardir # 获取当前目录的父目录字符串名:('..') os.makedirs('dir1/dir2') # 可生成多层递归目录*** os.removedirs('dirname1') # 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir('dirname') # 生成单级目录;相当于shell中mkdir dirname os.rmdir('dirname') # 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname os.listdir('dirname') # 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 print(os.listdir('Fiddler2')) >> ['AutoResponder.xml', 'Captures', 'Scripts'] os.remove() # 删除一个文件 os.rename("oldname","newname") # 重命名文件/目录*** os.stat('path/filename') # 获取文件/目录信息 print(os.stat('Fiddler2')) >> os.stat_result(st_mode=16895, st_ino=8162774324732497, st_dev=3155401450, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1512113836, st_mtime=1512113836, st_ctime=1512019051) os.sep # 获取操作系统特定的路径分隔符,win下为"\\",Linux下为"/" os.linesep # 获取当前平台使用的行终止符,win下为"\t\n",Linux下为"\n" os.pathsep # 获取用于分割文件路径的字符串 os.name # 获取字符串指示当前使用平台。win->'nt'; Linux->'posix' os.system("bash command") # 运行shell命令,直接显示 os.environ # 获取系统环境变量 # ================================= os.path.xxx*** ================================= os.path.abspath(path) # 返回path规范化的绝对路径 os.path.split(path) # 将path分割成目录和文件名二元组返回 os.path.dirname(path) # 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.basename(path) # 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素 os.path.exists(path) # 如果path存在,返回True;如果path不存在,返回False os.path.isabs(path) # 如果path是绝对路径,返回True os.path.isfile(path) # 如果path是一个存在的文件,返回True否则返回False*** os.path.isdir(path) # 如果path是一个存在的目录,则返回True。否则返回False os.path.join(path1[, path2[, ...]]) # 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 os.path.getatime(path) # 返回path所指向的文件或者目录的最后存取时间 os.path.getmtime(path) # 返回path所指向的文件或者目录的最后修改时间
小Tips
1.
sys.exit(n) 退出程序引发SystemExit异常, 可以捕获异常执行些清理工作. n默认值为
0
, 表示正常退出. 其他都是非正常退出. 还可以sys.exit(
"sorry, goodbye!"
); 一般主程序中使用此退出.
2.
os._exit(n), 直接退出, 不抛异常, 不执行相关清理工作. 常用在子进程的退出.
3.
exit()
/
quit(), 跑出SystemExit异常. 一般在交互式shell中退出时使用.