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中退出时使用.
posted @ 2017-09-28 22:15  想54256  阅读(201)  评论(0编辑  收藏  举报