常用模块(一)——sys、os
- 1. sys模块
- 2. os模块
1. sys模块
sys模块提供访问解释器使用或维护的变量,和与解释器进行交互的函数。
常用函数及变量如下:
sys.argv:获取当前正在执行的命令行参数的参数列表,参数通过空格符分割。
import sys
print(sys.argv)
# 执行python demo.py test test1
#======output=====
['demo.py', 'test', 'test1']sys.version:获取python解释程序版本信息sys.paltform:获取当前执行环境的平台。sys.path:获取python搜索模块的路径列表。sys.modules:返回已经加载到内存的模块,而并不是已经导入的模块。在程序import一个模块时,会先在这个字典中查找是否已经加载了此模块,如果已经加载了,则只将模块的名字加入程序的Local命名空间中,如果没有加载,则需要在sys.path目录中按照模块名称查找模块文件,找到后将其加载到内存中,并加入sys.modules中,并将名字导入到当前的Local命名空间中。sys.stdin、sys.stdout、sys.stderr:分别表示标准输入、标准输出、错误输出。
- 标准输入,一般为键盘输入,
stdin对象为解释器提供输入字符流。可以通过sys.stdin.readline()、sys.stdin.read()、sys.stdin.readlines()等来进行输入。在使用sys.stdin.readlines()读取数据的时候,如果要结束读取,要使用Ctrl+D+Enter来结束读取,在windows下要使用Ctrl+Z+Enter来结束读取,如果在Pycharm下运行,同样要使用Ctrl+D+Enter来结束读取。 - 标准输出,一般为屏幕输出。可以通过
sys.stdout.write()来输出,其中还有一个缓冲区刷新的方法sys.stdout.flush(),通过它可以将缓冲区内的数据全部写到终端上。 - 错误输出,一般是错误信息,例如当抛出一个异常时,会通过
sys.stderr输出。
sys.exit(n):退出程序,正常退出时exit(0)。sys.executable:该属性返回Python解释器在磁盘上的存储路径。sys.getfilesystemencoding():返回当前系统中保存文件用的字符集。sys.maxsize:最大的int值。sys.getrecursionlimit():返回最大的递归层数。sys.setrecursionlimit(n):设置最大的递归层数。sys.getdefaultencoding():获取系统当前编码。sys.setdefaultencoding():设置系统默认编码。
使用sys模块模拟进度条
import sys
import time
def progress(percent, width=50):
assert percent <= 100, "The parameter 'percent' cannot be greater than 100!"
show_str = ('[%%-%ds]' % width) % (int(width * percent / 100) * "#")
print("\r%s %d%%" % (show_str, percent), end='' if percent < 100 else '\n', file=sys.stdout, flush=True)
for i in range(100):
progress(i+1)
time.sleep(0.1)
# 代码中使用的嵌套的%,将其拆解开就可以知道其产生的原理。其中\r是回到整行的开头,这样使其一直在同一行显示了。2. os模块
os模块代表了程序所在的操作系统,主要用于获取程序运行所在操作系统的相关信息。
常用的函数及变量如下:
os.sep:获取操作系统的路径分隔符。:获取当前执行代码的平台。os.linesep:获取当前平台的行终止符,Windows下使用\r\n,Linux下使用\n,Mac中使用\r。os.curdir:返回的是表示当前目录的符号,永远返回.,os.pardir返回上级目录的符号,永远返回.。os.getcwd():返回当前工作目录。os.getenv():获取指定的环境变量,如,os.getenv('path')。os.putenv():设置环境变量。os.listdir():返回指定目录下所有文件和目录名。os.mkdir():创建一个目录,只能创建一个目录,不能创建多层。os.rmdir():删除一个空目录,如果目录不为空则不能删除。os.mkdirs():可以递归创建目录。如果目录全部存在,则创建失败,抛出异常。os.removedirs():可以删除多层递归的空目录,如果目录中有文件则无法删除。os.chdir():改变当前工作目录到指定的目录。os.renname():重命名目录名或者文件名。重命名后的文件名存在则重命名失效。os.remove():删除文件。os.stat():获取文件的属性。os.system():执行shell命令。os.exit():终止当前进程。os.path.sep:返回路径分隔符。os.path.curdir和os.path.pardir:与os.cudir和os.pardir相同。os.path.split():将一个路径拆分成目录名和文件名两部分。os.path.splitext():将一个路径拆分成文件名和扩展名,文件名中会包含路径。os.path.isdir():判断一个路径是否为目录,不存在则返回False。os.path.isfile():判断一个路径是否为文件,不存在则返回False。os.path.isabs():判断是否为绝对路径,只判断格式,不判断是否存在。os.path.exists():判断文件或目录是否存在。os.path.getsize():获取指定文件的大小,如果传入的是目录则返回0。os.path.getatime(), os.path.getmtime(), os.path.getctime():分别返回最近访问该文件的时间,最近修改文件的时间和文件的创建时间的时间戳。os.path.abspath():获取指定文件的绝对路径。os.path.basename():返回文件的文件名。os.path.dirname():返回文件的目录名。os.path.join():连接目录名和文件名或其他路径名。os.path.normpath():规范路径,将路径中的斜杠或反斜杠统一。os.walk():是一个目录遍历器,可以遍历一个目录下的所有文件和目录。可以按如下方式遍历。
import os
root_path = ''
for (root, dirs, files) in os.walk(root_path):
print(root, dirs, files)
















