与操作系统进行交互:os 模块

os 模块提供了对系统文件进行操作的方法:

In [1]:

  1. import os

文件路径操作

  • os.remove(path)os.unlink(path) :删除指定路径的文件。路径可以是全名,也可以是当前工作目录下的路径。
  • os.removedirs:删除文件,并删除中间路径中的空文件夹
  • os.chdir(path):将当前工作目录改变为指定的路径
  • os.getcwd():返回当前的工作目录
  • os.curdir:表示当前目录的符号
  • os.rename(old, new):重命名文件
  • os.renames(old, new):重命名文件,如果中间路径的文件夹不存在,则创建文件夹
  • os.listdir(path):返回给定目录下的所有文件夹和文件名,不包括 '.''..' 以及子文件夹下的目录。('.''..' 分别指当前目录和父目录)
  • os.mkdir(name):产生新文件夹
  • os.makedirs(name):产生新文件夹,如果中间路径的文件夹不存在,则创建文件夹 当前目录:

In [2]:

  1. os.getcwd()

Out[2]:

  1. '/home/lijin/notes-python/05. advanced python'

当前目录的符号:

In [3]:

  1. os.curdir

Out[3]:

  1. '.'

当前目录下的文件:

In [4]:

  1. os.listdir(os.curdir)

Out[4]:

  1. ['05.01 overview of the sys module.ipynb',
  2. '05.05 datetime.ipynb',
  3. '05.13 decorator usage.ipynb',
  4. '.ipynb_checkpoints',
  5. '05.03 comma separated values.ipynb',
  6. '05.02 interacting with the OS - os.ipynb',
  7. '05.10 generators.ipynb',
  8. '05.15 scope.ipynb',
  9. '05.12 decorators.ipynb',
  10. '05.09 iterators.ipynb',
  11. 'my_database.sqlite',
  12. '05.11 context managers and the with statement.ipynb',
  13. '05.16 dynamic code execution.ipynb',
  14. '05.14 the operator functools itertools toolz fn funcy module.ipynb',
  15. '05.04 regular expression.ipynb',
  16. '05.07 object-relational mappers.ipynb',
  17. '05.08 functions.ipynb',
  18. '05.06 sql databases.ipynb']

产生文件:

In [5]:

  1. f = open("test.file", "w")
  2. f.close()
  3.  
  4. print "test.file" in os.listdir(os.curdir)
  1. True

重命名文件:

In [6]:

  1. os.rename("test.file", "test.new.file")
  2.  
  3. print "test.file" in os.listdir(os.curdir)
  4. print "test.new.file" in os.listdir(os.curdir)
  1. False
  2. True

删除文件:

In [7]:

  1. os.remove("test.new.file")

系统常量

当前操作系统的换行符:

In [8]:

  1. # windows 为 \r\n
  2. os.linesep

Out[8]:

  1. '\n'

当前操作系统的路径分隔符:

In [9]:

  1. os.sep

Out[9]:

  1. '/'

当前操作系统的环境变量中的分隔符(';'':'):

In [10]:

  1. os.pathsep

Out[10]:

  1. ':'

其他

os.environ 是一个存储所有环境变量的值的字典,可以修改。

In [11]:

  1. os.environ["USER"]

Out[11]:

  1. 'lijin'

os.urandom(len) 返回指定长度的随机字节。

os.path 模块

不同的操作系统使用不同的路径规范,这样当我们在不同的操作系统下进行操作时,可能会带来一定的麻烦,而 os.path 模块则帮我们解决了这个问题。

In [12]:

  1. import os.path

测试

  • os.path.isfile(path) :检测一个路径是否为普通文件
  • os.path.isdir(path):检测一个路径是否为文件夹
  • os.path.exists(path):检测路径是否存在
  • os.path.isabs(path):检测路径是否为绝对路径

split 和 join

  • os.path.split(path):拆分一个路径为 (head, tail) 两部分
  • os.path.join(a, *p):使用系统的路径分隔符,将各个部分合成一个路径

其他

  • os.path.abspath():返回路径的绝对路径
  • os.path.dirname(path):返回路径中的文件夹部分
  • os.path.basename(path):返回路径中的文件部分
  • os.path.splitext(path):将路径与扩展名分开
  • os.path.expanduser(path):展开 '~''~user'

原文: https://nbviewer.jupyter.org/github/lijin-THU/notes-python/blob/master/05-advanced-python/05.02-interacting-with-the-OS---os.ipynb