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

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

In [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]:
os.getcwd()
Out[2]:
'/home/lijin/notes-python/05. advanced python'

当前目录的符号:

In [3]:
os.curdir
Out[3]:
'.'

当前目录下的文件:

In [4]:
os.listdir(os.curdir)
Out[4]:
['05.01 overview of the sys module.ipynb',
 '05.05 datetime.ipynb',
 '05.13 decorator usage.ipynb',
 '.ipynb_checkpoints',
 '05.03 comma separated values.ipynb',
 '05.02 interacting with the OS - os.ipynb',
 '05.10 generators.ipynb',
 '05.15 scope.ipynb',
 '05.12 decorators.ipynb',
 '05.09 iterators.ipynb',
 'my_database.sqlite',
 '05.11 context managers and the with statement.ipynb',
 '05.16 dynamic code execution.ipynb',
 '05.14 the operator functools itertools toolz fn funcy module.ipynb',
 '05.04 regular expression.ipynb',
 '05.07 object-relational mappers.ipynb',
 '05.08 functions.ipynb',
 '05.06 sql databases.ipynb']

产生文件:

In [5]:
f = open("test.file", "w")
f.close()

print "test.file" in os.listdir(os.curdir)
True

重命名文件:

In [6]:
os.rename("test.file", "test.new.file")

print "test.file" in os.listdir(os.curdir)
print "test.new.file" in os.listdir(os.curdir)
False
True

删除文件:

In [7]:
os.remove("test.new.file")

系统常量

当前操作系统的换行符:

In [8]:
# windows 为 \r\n
os.linesep
Out[8]:
'\n'

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

In [9]:
os.sep
Out[9]:
'/'

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

In [10]:
os.pathsep
Out[10]:
':'

其他

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

In [11]:
os.environ["USER"]
Out[11]:
'lijin'

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

os.path 模块

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

In [12]:
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'