常用模块(一)——sys、os

  • 1. sys模块
  • 2. os模块


1. sys模块

sys模块提供访问解释器使用或维护的变量,和与解释器进行交互的函数。

常用函数及变量如下:

  1. sys.argv:获取当前正在执行的命令行参数的参数列表,参数通过空格符分割。
import sys
print(sys.argv)
# 执行python demo.py test test1
#======output=====
['demo.py', 'test', 'test1']
  1. sys.version:获取python解释程序版本信息
  2. sys.paltform:获取当前执行环境的平台。
  3. sys.path:获取python搜索模块的路径列表。
  4. sys.modules:返回已经加载到内存的模块,而并不是已经导入的模块。在程序import一个模块时,会先在这个字典中查找是否已经加载了此模块,如果已经加载了,则只将模块的名字加入程序的Local命名空间中,如果没有加载,则需要在sys.path目录中按照模块名称查找模块文件,找到后将其加载到内存中,并加入sys.modules中,并将名字导入到当前的Local命名空间中。
  5. 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输出。
  1. sys.exit(n):退出程序,正常退出时exit(0)。
  2. sys.executable:该属性返回Python解释器在磁盘上的存储路径。
  3. sys.getfilesystemencoding():返回当前系统中保存文件用的字符集。
  4. sys.maxsize:最大的int值。
  5. sys.getrecursionlimit():返回最大的递归层数。
  6. sys.setrecursionlimit(n):设置最大的递归层数。
  7. sys.getdefaultencoding():获取系统当前编码。
  8. 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模块代表了程序所在的操作系统,主要用于获取程序运行所在操作系统的相关信息。

常用的函数及变量如下:

  1. os.sep:获取操作系统的路径分隔符。
  2. :获取当前执行代码的平台。
  3. os.linesep:获取当前平台的行终止符,Windows下使用\r\nLinux下使用\nMac中使用\r
  4. os.curdir:返回的是表示当前目录的符号,永远返回.os.pardir返回上级目录的符号,永远返回.
  5. os.getcwd():返回当前工作目录。
  6. os.getenv():获取指定的环境变量,如,os.getenv('path')
  7. os.putenv():设置环境变量。
  8. os.listdir():返回指定目录下所有文件和目录名。
  9. os.mkdir():创建一个目录,只能创建一个目录,不能创建多层。
  10. os.rmdir():删除一个空目录,如果目录不为空则不能删除。
  11. os.mkdirs():可以递归创建目录。如果目录全部存在,则创建失败,抛出异常。
  12. os.removedirs():可以删除多层递归的空目录,如果目录中有文件则无法删除。
  13. os.chdir():改变当前工作目录到指定的目录。
  14. os.renname():重命名目录名或者文件名。重命名后的文件名存在则重命名失效。
  15. os.remove():删除文件。
  16. os.stat():获取文件的属性。
  17. os.system():执行shell命令。
  18. os.exit():终止当前进程。
  19. os.path.sep:返回路径分隔符。
  20. os.path.curdiros.path.pardir:与os.cudiros.pardir相同。
  21. os.path.split():将一个路径拆分成目录名和文件名两部分。
  22. os.path.splitext():将一个路径拆分成文件名和扩展名,文件名中会包含路径。
  23. os.path.isdir():判断一个路径是否为目录,不存在则返回False
  24. os.path.isfile():判断一个路径是否为文件,不存在则返回False
  25. os.path.isabs():判断是否为绝对路径,只判断格式,不判断是否存在。
  26. os.path.exists():判断文件或目录是否存在。
  27. os.path.getsize():获取指定文件的大小,如果传入的是目录则返回0。
  28. os.path.getatime(), os.path.getmtime(), os.path.getctime():分别返回最近访问该文件的时间,最近修改文件的时间和文件的创建时间的时间戳。
  29. os.path.abspath():获取指定文件的绝对路径。
  30. os.path.basename():返回文件的文件名。
  31. os.path.dirname():返回文件的目录名。
  32. os.path.join():连接目录名和文件名或其他路径名。
  33. os.path.normpath():规范路径,将路径中的斜杠或反斜杠统一。
  34. os.walk():是一个目录遍历器,可以遍历一个目录下的所有文件和目录。可以按如下方式遍历。
import os
root_path = ''
for (root, dirs, files) in os.walk(root_path):
    print(root, dirs, files)