Python 的 os 模块封装了常见的文件和目录操作,下面列出一些常用的操作函数:

方法

说明

os.mkdir

创建目录

os.rmdir

删除目录

os.rename

重命名

os.remove

删除文件

os.getcwd

获取当前工作路径

os.chdir

切换路径

os.walk

遍历目录

os.path.join

连接目录与文件名

os.path.split

分割文件名与目录

os.path.abspath

获取绝对路径

os.path.dirname

获取路径

os.path.basename

获取文件名或文件夹名

os.path.splitext

分离文件名与扩展名

os.path.isfile

判断给出的路径是否是一个文件

os.path.isdir

判断给出的路径是否是一个目录

os.system

执行系统命令

mkdir函数
os.mkdir(path[, mode])
  • path – 要创建的目录
  • mode – 要为目录设置的权限数字模式,默认的模式为 0777 (八进制)。
  • 该函数没有返回值。

用法:

import os, sys

# 创建的目录
path = "/tmp/home/monthly/daily/hourly"
os.mkdir( path, 0755 );
os.rmdir()函数
os.rmdir(path)
  • 该函数无返回值

用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则,抛出OSError。

os.rename()函数
os.rename(src, dst)
  • src – 要修改的目录名
  • dst – 修改后的目录名
  • 该函数无返回值

用于命名文件或目录,从 src 到 dst,如果dst是一个存在的目录,将抛出OSError。

os.remove()函数
os.remove(path)
  • path – 要移除的文件路径
  • 该函数无返回值

os.remove() 方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError。

os.getcwd()函数
os.getcwd()
  • 返回当前进程的工作目录。

用于返回当前工作目录。

os.chdir()函数
os.chdir(path)
  • path – 要切换到的新路径。
  • 如果允许访问返回 True , 否则返回False。
os.walk()函数
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
  • top – 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。
  • root 所指的是当前正在遍历的这个文件夹的本身的地址
  • dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
  • files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
  • topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。
  • onerror – 可选,需要一个 callable 对象,当 walk 需要异常时,会调用。
  • followlinks – 可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。
  • 该方法没有返回值。

用于通过在目录树中游走输出在目录中的文件名,向上或者向下。

用法举例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os
for root, dirs, files in os.walk(".", topdown=False):
    for name in files:
        print(os.path.join(root, name))
    for name in dirs:
        print(os.path.join(root, name))

执行以上程序输出结果为:

./.bash_logout
./amrood.tar.gz
./.emacs
./httpd.conf
./www.tar.gz
./mysql.tar.gz
./test.py
./.bashrc
./.bash_history
./.bash_profile
./tmp
./tmp/test.py
os.path模块

os.path 模块主要用于获取文件的属性。
具体可参考:os.path模块

一些示例:

print( os.path.basename('/root/runoob.txt') )   # 返回文件名
print( os.path.dirname('/root/runoob.txt') )    # 返回目录路径
print( os.path.split('/root/runoob.txt') )      # 分割文件名与路径
print( os.path.join('root','test','runoob.txt') )  # 将目录和文件名合成一个路径

输出:

runoob.txt
/root
('/root', 'runoob.txt')
root/test/runoob.txt
os.system()
os.system(cmd)

原理:

  • system函数可以将字符串转化成命令在服务器上运行;其原理是每一条system函数执行时,其会创建一个子进程在系统上执行命令行,子进程的执行结果无法影响主进程;
  • 上述原理会导致当需要执行多条命令行的时候可能得不到预期的结果;
  • 如果执行成功,那么会返回0
import os
os.system('cd /usr/local')
os.mkdir('aaa.txt)

上述程序运行后会发现txt文件并没有创建在/usr/local文件夹下,而是在当前的目录下;

使用system执行多条命令
为了保证system执行多条命令可以成功,多条命令需要在同一个子进程中运行;

os.system('cd /usr/local && mkdir aaa.txt')

或者

os.system('cd /usr/local ; mkdir aaa.txt')

参考:

  1. http://wiki.jikexueyuan.com/project/explore-python/File-Directory/os.html
  2. https://www.runoob.com/python/os-file-methods.html