与操作系统进行交互: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'