Python 文件和目录管理(os)
来源:互联网 发布:大数据技术论文 编辑:程序博客网 时间:2024/06/05 02:21
简述
目录(或文件夹)是文件和子目录的集合
在 Linux 中,操作系统提供了很多的命令(例如:ls
、cd
),用于文件和目录管理。在 Python 中,有一个 os
模块,也提供了许多便利的方法来管理文件和目录。
- 简述
- os 模块
- 获取当前工作目录
- 更改当前工作目录
- 列出文件和目录
- 创建目录
- 重命名文件或目录
- 删除文件或目录
- 遍历目录
版权所有:一去丶二三里,转载请注明出处:http://blog.csdn.net/liang19890820
os 模块
os
:语义为操作系统。所以,os
模块提供的肯定是操作系统相关的功能了(与具体的平台无关)。
如果用 dir()
查看 os
,会发现内容相当多。下面,只列出文件和目录的相关方法:
getcwd()
获取当前工作目录 chdir(path)
将当前的工作目录更改为指定的路径 listdir(path=None)
列出指定目录中的文件名。如果 path
为 None
,则使用 path='.'
。 mkdir(path, mode=511, *, dir_fd=None)
创建目录 makedirs(name, mode=511, exist_ok=False)
递归创建多层目录 rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
重命名文件或目录 remove(path, *, dir_fd=None)
删除文件 rmdir(path, *, dir_fd=None)
删除目录 removedirs(name)
递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空抛出异常。 walk(top, topdown=True, onerror=None, followlinks=False)
遍历 top
路径下的所有子目录,返回一个包含 3 个元素的元组:(dirpath, dirnames, filenames)
。 os.curdir
指代当前目录('.'
) os.pardir
指代上一级目录('..'
) os.sep
路径分割符(Windows 为 '\\'
,Linux 为 '/'
) os.linesep
行终止符(Windows 为 '\r\n'
,Linux 为 '\n'
) os.name
指代当前使用的操作系统(Windows 系统为 'nt'
,Linux 为 'posix'
)简单认识 os
模块后,来看如何使用 - 输出当前的操作系统:
>>> import os>>> os.name # 操作系统'posix'
如果是 posix
,说明系统是 Linux;如果是 nt
,则是 Windows 系统。
获取当前工作目录
要获取当前工作目录,有两种方式:
getcwd()
:以 unicode 字符串的形式返回getcwdb()
:以 bytes 字符串的形式返回
>>> os.getcwd()'/home/wang/workspace'>>> >>> os.getcwdb()b'/home/wang/workspace'
更改当前工作目录
可以使用 chdir()
更改当前工作目录:
>>> os.getcwd() # 更改前'/home/wang/workspace'>>> >>> os.chdir("/etc") # 更改当前工作目录>>> >>> os.getcwd() # 更改后'/etc'
注意: 在 Windows 中,经常也会使用反斜杠(\
),这时使用转义序列(\\
)更安全。
列出文件和目录
目录中的所有文件和子目录可以使用 listdir()
列出:
>>> os.listdir('/') # 列出根目录 / 中的文件和子目录['boot', 'dev', 'home', 'proc', 'run', 'sys', 'var', 'etc', 'root', 'tmp', 'usr', 'bin', 'sbin', 'lib', 'lib64', 'media', 'mnt', 'opt', 'srv']>>> >>> os.getcwd()'/home/wang/workspace'>>> os.listdir() # 列出当前目录中的文件和子目录['python', 'README.txt']
注意: 如果没有指定路径,将从当前目录返回。
创建目录
可以使用 mkdir()
创建目录:
>>> os.listdir() # 创建前['python', 'README.txt']>>> >>> os.mkdir("PHP") # 在当前路径下,创建名为 PHP 的目录>>> >>> os.listdir() # 创建后['python', 'README.txt', 'PHP']
注意: 如果未指定完整路径,则将在当前目录中创建。
重命名文件或目录
rename()
可以重命名文件或目录,第一个参数为旧名称,第二个参数为新名称:
>>> os.listdir() # 重命名前['python', 'README.txt', 'PHP']>>> >>> os.rename("README.txt", "Notice.txt") # 重命名文件>>> os.rename("PHP", "Java") # 重命名空目录>>> os.rename("python", "Py") # 重命名非空目录>>> >>> os.listdir() # 重命名后['Notice.txt', 'Java', 'Py']
可以看到,无论目录是否为空,都可以重命名成功。
删除文件或目录
可以使用 remove()
删除文件,使用 rmdir()
删除空目录:
>>> os.listdir() # 删除前['Notice.txt', 'Java', 'Py']>>> >>> os.remove("Notice.txt") # 删除文件>>> os.rmdir("Java") # 删除空目录>>> >>> os.listdir() # 删除后['Py']
注意: rmdir()
只能删除空目录,无法删除非空目录。否则,会引发 OSError
。
要删除非空目录,需要借助 shutil
模块,使用 rmtree()
:
>>> os.listdir()['Py']>>> >>> os.rmdir("Py") # 无法删除非空目录...OSError: [Errno 39] Directory not empty: 'Py'>>> >>> import shutil>>> shutil.rmtree("Py") # 删除非空目录>>> >>> os.listdir()[]
但是,复制、移动文件的相关函数居然在 os
模块中不存在!原因是复制文件并非由操作系统提供的系统调用。
幸运的是,shutil
模块提供了 copy()
、move()
相关的函数,还可以在 shutil
模块中找到很多实用函数,它们可以看做是 os
模块的补充。
遍历目录
walk()
是遍历目录常用的方法,它返回一个包含 3 个元素的元组:(dirpath, dirnames, filenames)
:
dirpath
:以字符串形式返回该目录下所有的绝对路径dirnames
:以列表形式返回每一个绝对路径下的目录filesnames
:以列表形式返回该路径下所有文件
使用命令 tree
,以树状图列出目录的内容:
[wang@localhost workspace]$ tree.├── python│ ├── Notice.txt│ └── os│ ├── test2.py│ └── test.py└── README.txt2 directories, 4 files
使用 walk()
方法:
>>> for root, dirs, files in os.walk("/home/wang/workspace"):... print(root)... print(dirs)... print(files)... print()... /home/wang/workspace['python']['README.txt']/home/wang/workspace/python['os']['Notice.txt']/home/wang/workspace/python/os[]['test.py', 'test2.py']
- Python 文件和目录管理(os)
- python os模块 操作文件和目录
- Python模块: 文件和目录os+shutil
- python类库31[文件和目录os+os.path+shutil]
- python类库[文件和目录os+os.path+shutil]
- Python OS 文件/目录方法
- python os模块文件目录
- Python OS 文件/目录方法
- Python学习OS 模块来处理文件和目录
- python,os操作文件,文件路径(上一级目录)
- 项目总结(一)------Python对文件和目录进行操作 (file对象/os/os.path/shutil 模块)
- 文件和目录管理
- python 目录文件操作 os模块
- Python 使用os模块遍历文件目录
- python学习笔记25(文件管理 os包)
- python标准库:文件管理(os)
- salt管理---文件管理和目录管理
- Python os.path 关于关于文件/目录的常用函数和方法
- JAVA设计模式 单例模式
- jQuery动态效果
- Packets
- 结合FME利用倾斜三维模型数据成果生成DSM等数据产品
- centos postgresql
- Python 文件和目录管理(os)
- linux线程和进程
- Stream创建斐波那契数列
- 堆溢出问题
- js图片上传
- Tensorflow实例:(卷积神经网络)LeNet-5模型
- java常用数据类型
- 银联支付的几种模式
- 10月10日初次接TP触框架之后有感,以及第一天对于框架这个词的认识。