0
点赞
收藏
分享

微信扫一扫

Python学习记录——14.os模块,sys模块,time模块,loging模块


文章目录

  • ​​1.os模块​​
  • ​​2.sys模块​​
  • ​​3.time模块​​
  • ​​4.logging模块​​

1.os模块

os 模块提供了非常丰富的方法用来处理文件和目录。常用的方法如下表所示:

序号

方法及描述

1

​​os.access(path, mode)​​ 检验权限模式

2

​​os.chdir(path)​​ 改变当前工作目录

3

​​os.chflags(path, flags)​​ 设置路径的标记为数字标记。

4

​​os.chmod(path, mode)​​ 更改权限

5

​​os.chown(path, uid, gid)​​ 更改文件所有者

6

​​os.chroot(path)​​ 改变当前进程的根目录

7

​​os.close(fd)​​ 关闭文件描述符 fd

8

​​os.closerange(fd_low, fd_high)​​ 关闭所有文件描述符,从 fd_low (包含) 到 fd_high (不包含), 错误会忽略

9

​​os.dup(fd)​​ 复制文件描述符 fd

10

​​os.dup2(fd, fd2)​​ 将一个文件描述符 fd 复制到另一个 fd2

11

​​os.fchdir(fd)​​ 通过文件描述符改变当前工作目录

12

​​os.fchmod(fd, mode)​​ 改变一个文件的访问权限,该文件由参数fd指定,参数mode是Unix下的文件访问权限。

13

​​os.fchown(fd, uid, gid)​​ 修改一个文件的所有权,这个函数修改一个文件的用户ID和用户组ID,该文件由文件描述符fd指定。

14

​​os.fdatasync(fd)​​ 强制将文件写入磁盘,该文件由文件描述符fd指定,但是不强制更新文件的状态信息。

15

[os.fdopen(fd​​, mode[, bufsize]])​​ 通过文件描述符 fd 创建一个文件对象,并返回这个文件对象

16

​​os.fpathconf(fd, name)​​ 返回一个打开的文件的系统配置信息。name为检索的系统配置的值,它也许是一个定义系统值的字符串,这些名字在很多标准中指定(POSIX.1, Unix 95, Unix 98, 和其它)。

17

​​os.fstat(fd)​​ 返回文件描述符fd的状态,像stat()。

18

​​os.fstatvfs(fd)​​ 返回包含文件描述符fd的文件的文件系统的信息,像 statvfs()

19

​​os.fsync(fd)​​ 强制将文件描述符为fd的文件写入硬盘。

20

​​os.ftruncate(fd, length)​​ 裁剪文件描述符fd对应的文件, 所以它最大不能超过文件大小。

21

​​os.getcwd()​​ 返回当前工作目录

22

​​os.getcwdu()​​ 返回一个当前工作目录的Unicode对象

23

​​os.isatty(fd)​​ 如果文件描述符fd是打开的,同时与tty(-like)设备相连,则返回true, 否则False。

24

​​os.lchflags(path, flags)​​ 设置路径的标记为数字标记,类似 chflags(),但是没有软链接

25

​​os.lchmod(path, mode)​​ 修改连接文件权限

26

​​os.lchown(path, uid, gid)​​ 更改文件所有者,类似 chown,但是不追踪链接。

27

​​os.link(src, dst)​​ 创建硬链接,名为参数 dst,指向参数 src

28

​​os.listdir(path)​​ 返回path指定的文件夹包含的文件或文件夹的名字的列表。

29

​​os.lseek(fd, pos, how)​​ 设置文件描述符 fd当前位置为pos, how方式修改: SEEK_SET 或者 0 设置从文件开始的计算的pos; SEEK_CUR或者 1 则从当前位置计算; os.SEEK_END或者2则从文件尾部开始. 在unix,Windows中有效

30

​​os.lstat(path)​​ 像stat(),但是没有软链接

31

​​os.major(device)​​ 从原始的设备号中提取设备major号码 (使用stat中的st_dev或者st_rdev field)。

32

​​os.makedev(major, minor)​​ 以major和minor设备号组成一个原始设备号

33

[os.makedirs(path​​, mode])​​ 递归文件夹创建函数。像mkdir(), 但创建的所有intermediate-level文件夹需要包含子文件夹。

34

​​os.minor(device)​​ 从原始的设备号中提取设备minor号码 (使用stat中的st_dev或者st_rdev field )。

35

[os.mkdir(path​​, mode])​​ 以数字mode的mode创建一个名为path的文件夹.默认的 mode 是 0777 (八进制)。

36

[os.mkfifo(path​​, mode])​​ 创建命名管道,mode 为数字,默认为 0666 (八进制)

37

[os.mknod(filename​​, mode=0600, device])​​ 创建一个名为filename文件系统节点(文件,设备特别文件或者命名pipe)。

38

[os.open(file, flags​​, mode])​​ 打开一个文件,并且设置需要的打开选项,mode参数是可选的

39

​​os.openpty()​​ 打开一个新的伪终端对。返回 pty 和 tty的文件描述符。

40

​​os.pathconf(path, name)​​ 返回相关文件的系统配置信息。

41

​​os.pipe()​​ 创建一个管道. 返回一对文件描述符(r, w) 分别为读和写

42

[os.popen(command​​, mode[, bufsize]])​​ 从一个 command 打开一个管道

43

​​os.read(fd, n)​​ 从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串。

44

​​os.readlink(path)​​ 返回软链接所指向的文件

45

​​os.remove(path)​​ 删除路径为path的文件。如果path 是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory。

46

​​os.removedirs(path)​​ 递归删除目录。

47

​​os.rename(src, dst)​​ 重命名文件或目录,从 src 到 dst

48

​​os.renames(old, new)​​ 递归地对目录进行更名,也可以对文件进行更名。

49

​​os.rmdir(path)​​ 删除path指定的空目录,如果目录非空,则抛出一个OSError异常。

50

​​os.stat(path)​​ 获取path指定的路径的信息,功能等同于C API中的stat()系统调用。

51

[os.stat_float_times(​​newvalue])​​ 决定stat_result是否以float对象显示时间戳

52

​​os.statvfs(path)​​ 获取指定路径的文件系统统计信息

53

​​os.symlink(src, dst)​​ 创建一个软链接

54

​​os.tcgetpgrp(fd)​​ 返回与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组

55

​​os.tcsetpgrp(fd, pg)​​ 设置与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组为pg。

56

[os.tempnam(​​dir[, prefix]])​​ 返回唯一的路径名用于创建临时文件。

57

​​os.tmpfile()​​ 返回一个打开的模式为(w+b)的文件对象 .这文件对象没有文件夹入口,没有文件描述符,将会自动删除。

58

​​os.tmpnam()​​ 为创建一个临时文件返回一个唯一的路径

59

​​os.ttyname(fd)​​ 返回一个字符串,它表示与文件描述符fd 关联的终端设备。如果fd 没有与终端设备关联,则引发一个异常。

60

​​os.unlink(path)​​ 删除文件路径

61

​​os.utime(path, times)​​ 返回指定的path文件的访问和修改的时间。

62

[os.walk(top​​, topdown=True[, οnerrοr=None[, followlinks=False]]])​​ 输出在文件夹中的文件名通过在树中游走,向上或者向下。

63

​​os.write(fd, str)​​ 写入字符串到文件描述符 fd中. 返回实际写入的字符串长度

2.sys模块

sys 是一个和 Python 解释器关系密切的标准库,它和帮助我们访问和 Python 解释器联系紧密的变量和函数。
​​​[e for e in dir(sys) if not e.startswith('_')]​

\>>> [e for e in dir(sys) if not e.startswith('_')]
['api_version', 'argv', 'base_exec_prefix', 'base_prefix', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'get_asyncgen_hooks', 'get_coroutine_wrapper', 'getallocatedblocks', 'getcheckinterval', 'getdefaultencoding', 'getfilesystemencodeerrors', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettrace', 'getwindowsversion', 'hash_info', 'hexversion', 'implementation', 'int_info', 'intern', 'is_finalizing', 'last_traceback', 'last_type', 'last_value', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'set_asyncgen_hooks', 'set_coroutine_wrapper', 'setcheckinterval', 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', 'thread_info', 'version', 'version_info', 'warnoptions', 'winver']

上面列出的就是 sys 模块所包含的全部成员(包括变量、函数等),不要被它们吓着了,以为这些全都需要记下来。实际上完全没有必要,通常都是用到哪些模块就去查阅其对应的说明文档和参考手册。
需要说明的是,大部分时候用不到 sys 模块里很冷僻的功能,因此只介绍 sys 模块中常用的属性和函数

sys成员(变量和函数)

功能描述

sys.argv

获取运行 Python 程序的命令行参数。其中 sys.argv[0] 通常就是指该 Python 程序,sys.argv[1] 代表为 Python 程序提供的第一个参数,sys.argv[2] 代表为 Python 程序提供的第二个参数……依此类推。

sys.path

是一个字符串列表,其中每个字符串都是一个目录名,在使用 import 语句导入模块时,解释器就会从这些目录中查找指定的模块。

sys.exit()

通过引发 SystemExit 异常来退出程序。将其放在 try 块中不能阻止 finally 块的执行。你可以提供一个整数作为参数(默认为 0 ,标识成功),用来标识程序是否成功运行,这是 UNIX 的一个惯例。

sys.modules

返回模块名和载入模块对应关系的字典。

sys.platform

此变量是一个字符串,标识解释器当前正在运行的平台名称,它可能是标识操作系统的名称,也可能是标识其他种类的平台,如果运行 Jython 的话,就是 Java 虚拟机。

sys.stdin、sys.stdout、sys.stderr

这三个模块变量是类文件流对象,分别表示标准输入、标准输出和标准错误。简单理解,Python 利用 sys.stdin 获得输入,利用 sys.stdout 输出。

sys.flags

该只读属性返回运行 Python 命令时指定的旗标。

sys.getfilesystemencoding()

返回在当前系统中保存文件所用的字符集。

sys.getrefcount(object)

返回指定对象的引用计数。前面介绍过,当 object 对象的引用计数为 0 时,系统会回收该对象。

sys.getrecursionlimit()

返回 Python 解释器当前支持的递归深度。该属性可通过 setrecursionlimit() 方法重新设置。

sys.getswitchinterval()

返回在当前 Python 解释器中线程切换的时间间隔。该属性可通过 setswitchinterval() 函数改变。

sys.implementation

返回当前 Python 解释器的实现。

sys.maxsize

返回 Python 整数支持的最大值。在 32 位平台上,该属性值为 231-1;在 64 位平台上,该属性值为 263-1。

sys.executable

该属性返回 Python 解释器在磁盘上的存储路径。

sys.byteorder

显示本地字节序的指示符。如果本地字节序是大端模式,则该属性返回 big;否则返回 little。

sys.copyright

该属性返回与 Python 解释器有关的版权信息。

sys.version

返回当前 Python 解释器的版本信息。

sys.winver

返回当前 Python 解释器的主版本号。

import sys
# 显示本地字节序的指示符。
print(sys.byteorder)
# 显示Python解释器有关的版权信息
print(sys.copyright)
# 显示Python解释器在磁盘上的存储路径。
print(sys.executable)
# 显示当前系统上保存文件所用的字符集。
print(sys.getfilesystemencoding())
# 显示Python整数支持的最大值
print(sys.maxsize)
# 显示Python解释器所在平台
print(sys.platform)
# 显示当前Python解释器的版本信息。
print(sys.version)
# 返回当前Python解释器的主版本号。
print(sys.winver)

上面程序分别调用了 sys 模块的部分属性和函数。运行该程序,可以看到如下输出结果:

little
Copyright (c) 2001-2017 Python Software Foundation.
All Rights Reserved.
Copyright (c) 2000 BeOpen.com.
All Rights Reserved.

Copyright (c) 1995-2001 Corporation for National Research Initiatives.
All Rights Reserved.

Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.
All Rights Reserved.
D:\python3.6\pythonw.exe
utf-8
9223372036854775807
win32
3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)]
3.6

从上面的输出结果可以看出,Windows 7 系统(作者使用的)的字节序是小端模式,将 Python 解释器保存在 ​​D:\python3.6\pythonw.exe​​ 通过 sys 模块的 argv 属性可获取运行 Python 程序的命令行参数。argv 属性值是一个列表,其列表元素和运行参数的关系如图 1 所示。

上面程序是最简单的“Hello World”级的程序,只是这个程序增加了输出 argv 列表的长度、遍历 argv 列表元素的代码。使用 命令运行上面程序,可以看到如下输出结果:

1
argv_test.py

此时看到 argv 列表的长度为 1,argv 的第一个元素就是被运行的 Python 程序。
如果改为使用如下命令来运行该程序:

python argv_test.py Python Swift

可以看到如下输出结果:

3
argv_test.py
Python
Swift

上面两次运行的结果和前面介绍的内容完全一致。
如果某个参数本身包含了空格,则应该将该参数用双引号("")括起来;否则,Python 会把这个空格当成参数分隔符,而不是参数本身。例如,采用如下命令来运行上面程序:

python argv test.py "Python Swift"

可以看到 argv 列表的长度是 2,第一个列表元素是被运行的 Python 程序,第二个列表元素的值是“Python Swift”。
前面介绍了使用 PYTHONPATH 环境变量来添加 Python 模块的加载路径,但这种方式必须预先设置好。如果需要在程序运行时动态改变 Python 模块的加载路径,则可通过 sys.path 属性来实现。

import sys# 动态添加g:\fk_ext路径作为模块加载路径sys.path.append('g:\\fk_ext')# 加载g:\fk_ext路径下的hello模块import hello

为了成功运行该程序,需要在 G:\ 盘中创建 fk_ext 目录,并在该目录下添加 hello.py 模块文件。

3.time模块

time模块包含了以下内置函数,既有时间处理相的,也有转换时间格式的:

序号

函数及描述

1

​​time.altzone​​ 返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。

2

[time.asctime(​​tupletime])​​ 接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。

3

​​time.clock( )​​ 用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。

4

[time.ctime(​​secs])​​ 作用相当于asctime(localtime(secs)),未给参数相当于asctime()

5

[time.gmtime(​​secs])​​ 接收时间辍(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组t。注:t.tm_isdst始终为0

6

[time.localtime(​​secs])​​ 接收时间辍(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组t(t.tm_isdst可取0或1,取决于当地当时是不是夏令时)。

7

​​time.mktime(tupletime)​​ 接受时间元组并返回时间辍(1970纪元后经过的浮点秒数)。

8

​​time.sleep(secs)​​ 推迟调用线程的运行,secs指秒数。

9

[time.strftime(fmt​​,tupletime])​​ 接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。

10

​​time.strptime(str,fmt=’%a %b %d %H:%M:%S %Y’)​​ 根据fmt的格式把一个时间字符串解析为时间元组。

11

​​time.time( )​​ 返回当前时间的时间戳(1970纪元后经过的浮点秒数)。

12

​​time.tzset()​​ 根据环境变量TZ重新初始化时间相关设置。

Time模块包含了以下2个非常重要的属性:

序号

属性及描述

1

time.timezone 属性time.timezone是当地时区(未启动夏令时)距离格林威治的偏移秒数(>0,美洲;<=0大部分欧洲,亚洲,非洲)。

2

time.tzname 属性time.tzname包含一对根据情况的不同而不同的字符串,分别是带夏令时的本地时区名称,和不带的。

4.logging模块

Python中有一个模块logging,可以直接记录日志

#   日志级别# CRITICAL 50# ERROR    40# WARNING  30# INFO     20# DEBUG    10

logging.basicConfig()函数中的具体参数:

  • filename: 指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中;
  • filemode: 文件打开方式,在指定了filename时使用这个参数,默认值为“w”还可指定为“a”
  • format: 指定handler使用的日志显示格式;
  • datefmt: 指定日期时间格式。,格式参考strftime时间格式化(下文)
  • level: 设置rootlogger的日志级别
  • stream: 用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr。
    若同时列出了filename和stream两个参数,则stream参数会被忽略。

format参数中可能用到的格式化信息:

%(name)s

Logger的名字

%(levelno)s

数字形式的日志级别

%(levelname)s

文本形式的日志级别

%(pathname)s

调用日志输出函数的模块的完整路径名,可能没有

%(filename)s

调用日志输出函数的模块的文件名

%(module)s

调用日志输出函数的模块名

%(funcName)s

调用日志输出函数的函数名

%(lineno)d

调用日志输出函数的语句所在的代码行

%(created)f

当前时间,用UNIX标准的表示时间的浮 点数表示

%(relativeCreated)d

输出日志信息时的,自Logger创建以 来的毫秒数

%(asctime)s

字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒

%(thread)d

线程ID。可能没有

%(threadName)s

线程名。可能没有

%(process)d

进程ID。可能没有

%(message)s

用户输出的消息


举报

相关推荐

0 条评论