专栏首页Python空间Python 标准库之 OS

Python 标准库之 OS

本文字数:4255 字 阅读本文大概需要:11 分钟

写在之前

在昨天的文章(Python 标准库之 sys & copy)中,我们介绍了 Python 标准库中的 sys 和 copy,不知道你掌握了多少。今天我们来学习 Python 标准库的 os,os 模块提供了访问操作系统服务的功能,它包含的内容比较多,有时候会感觉很神秘。

>>> import os
>>> dir(os)
['DirEntry', 'F_OK', 'MutableMapping', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH',
 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__
name__', '__package__', '__spec__', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_putenv', '_unsetenv', '_wrap_close', 'abc', 'abort', 'access', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'cpu_coun
t', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fspath', '
fstat', 'fsync', 'ftruncate', 'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir',
'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_handle
_inheritable', 'set_inheritable', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_result', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'suppo
rts_fd', 'supports_follow_symlinks', 'symlink', 'sys', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 'urandom', 'utime', 'waitpid', 'walk', 'write']

这么多内容就问你怕不怕,当然这么多的东西我也不可能在这一一介绍,下面我就选几个常用的介绍一下,目的是为了不断强化学习方法。当然了,还有另一个好工具 -- Google。

操作文件

在对文件进行操作的时候,open() 这个内建函数可以打开文件,但是如果要对文件进行重命名,删除等操作,就要用到 os 模块的方法。

首先创建一个文件,命名为 test.py,内容如下:

print('this is a test file.')

然后将这个文件名重命名为其它名称:

>>> import os
>>> os.rename('test.py','new.py')

注意这里要先进入到文件 test.py 的目录,然后再进入交互模式,所以直接可以写文件名,如果不是这样,则需要将文件名的路径写上。在 os.rename 中,第一个是原文件的名称,第二个是打算修改为的文件名,然后查看,可以看到这个文件:

$ ls ne*
new.py

另外还有一个方法是 os.remove(),首先我们先查看一下帮助信息,然后再进行实验:

>>> help(os.remove)
Help on built-in function remove in module nt:

remove(path, *, dir_fd=None)
    Remove a file (same as unlink()).

下面我直接写一下如何使用,假设要删除掉 /usr 下的 a.py:

>>> import os
>>> os.remove(/usr/a.py)

这里再强调一点的是,os.remove() 只能删除文件,不能删除目录,如果想要删除目录那该怎么办?我们接着往下看。

操作目录

1.os.listdir

os.listdir 的作用是显示目录中的内容,这个目录包括子目录和文件。

>>> help(os.listdir)
Help on built-in function listdir in module nt:

listdir(path=None)
    Return a list containing the names of the files in the directory.

看完帮助信息,你一定会觉得这个是一个非常简单的方法,不过需要注意的是,它返回的值是列表,并且不显示目录中某些子目录或者隐藏文件。

2.工作目录

os.getcwd:当前工作目录; os.chdir:改变当前工作目录。

这两个函数具体怎么用,可以通过 help() 来查看文档,我在这里只演示一个例子:

>>> import os
>>> cwd = os.getcwd() #当前目录
>>> print(cwd)
C:\Users\Administrator\PycharmProjects\sample_use
>>> os.chdir(os.pardir) #进入到上一级
>>> os.getcwd() #当前目录
'C:\\Users\\Administrator\\PycharmProjects'

3.创建和删除目录

os.makedirs,os.removedirs:创建和删除目录。

>>> os.removedirs(dir)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\os.py", line 239, in removedirs
    rmdir(name)

从报错信息来看的话,要删除某个目录,则那个目录必须是空的。

>>> os.getcwd()
'C:\\Users\\Administrator\\PycharmProjects'

这是当前目录,在这个目录下再创建一个新的子目录:

>>> os.makedirs("newtest")
>>> os.chdir("newtest")
>>> os.getcwd()
'C:\\Users\\Administrator\\PycharmProjects\\newtest'

下面把上面刚刚建立的这个目录删除,毫无疑问,它是空的。

>>> os.listdir(os.getcwd())
[]
>>> newdir = os.getcwd()
>>> os.removedirs(newdir)

文件和目录属性

不管是在那种操作系统中,都能看到文件或者目录的有关属性,那么在 os 中,也有这样一个方法:os.stat()。

>>> import os
>>> f = os.getcwd() #当前目录
>>> f
'C:\\Users\\Administrator\\PycharmProjects\\sample_use'

显示这个目录的有关信息:

>>> os.stat(f)
os.stat_result(st_mode=16895, st_ino=10133099161724599, st_dev=2788953634, st_nlink=1, st_uid=0, st_gid=0, st_size=4096, st_atime=1536567604, st_mtime=1536567604, st_ctime=1531269583)

从上述的结果中可能看不出什么,先不要着急,这样的结果对计算机是友好的,但是对我们来说可算不上友好。如果用下面的方法的话,就友好多了:

>>> ff = os.stat(f)
>>> mt = ff[8]

ff[8] 就是 st_mtime 的值,它代表最后修改文件的时间,结果如下所示:

>>> mt
1536567629

这样看还是不够友好,下面我们用 time 模块来试一试:

>>> import time
>>> time.ctime(mt)
'Mon Sep 10 16:20:29 2018'

这样看对我们就很友好了。

写在之后

到这 os 就基本说完了,当然上面写的只是庞大的 os 中很小很小的一点,如果你想要深入的学习更多的话,还是要多 google 多学习。这一部分的话,建议你还是自己实际动手操作一下的好,光干瞪眼看着,看不出什么东西来。

如果你觉得这篇文章对你有所帮助的话,欢迎点赞,谢谢支持。

The end。

本文分享自微信公众号 - Python空间(Devtogether)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-09-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python Django使用HttpResponse返回图片并显示

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    菲宇
  • python的super()的作用和原理

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    菲宇
  • Python操作MongoDB

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    菲宇
  • Selenium常见元素定位方法和操作的学习介绍

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    菲宇
  • 奔走相告,Python 3.8.0 正式发布!

    那么,这次新发布的 Python 3.8.0 有哪些重要的改进呢?以下是是 Python 3.8 相比 3.7 的新增特性。

    小草AI
  • Python进阶之Matplotlib入门(三)

    Matplotlib是Python的画图领域使用最广泛的绘图库,它能让使用者很轻松地将数据图形化以及利用它可以画出许多高质量的图像,是用Python画图的必备技...

    HuangWeiAI
  • jieba分词器详解及python实战

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    菲宇
  • Django实现统计网站访问次数、访问 ip 、受访页面

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    菲宇
  • 史上最全 | 数据分析技能详细拆解,一张图覆盖全流程知识细节和资源推荐(附下载)

    而基于这些数据的分析,可以挖掘到非常多有价值的信息,这些信息正在成为大多数企业业务增长、迭代更新的关键。

    数据派THU
  • Python进阶之Matplotlib入门(二)

    Matplotlib是Python的画图领域使用最广泛的绘图库,它能让使用者很轻松地将数据图形化以及利用它可以画出许多高质量的图像,是用Python画图的必备技...

    HuangWeiAI

扫码关注云+社区

领取腾讯云代金券