Python学习(九)IO 编程 —— 文件夹及文件操作
Python 文件夹及文件操作
我们经常会与文件和目录打交道,对于这些操作,python可以使用 os 及 shutill 模块,其中包含了很多操作文件和目录的函数。
os 可以执行简单的文件夹及文件操作,引入用 import os,可用 help(os) 或是 dir(os) 查看其用法。注意有些函数在os模块中,有的是在os.path模块中。
shutil 模块提供了大量的文件的高级操作,特别针对文件拷贝和删除。主要功能为目录和文件操作以及压缩操作。须引入 import shutil ,具体 help。本文仅介绍移动、复制及删除。
可先在 D:\ 下创建文件夹 Python_os , 再在其下创建文件夹 os, 再在其下创建 test.txt;之后的示例会在该文件夹下操作
判断路径或文件
os.path.isabs(...) # 判断是否绝对路径
os.path.exists(...) # 判断是否真实存在
os.path.isdir(...) # 判断是否是个目录
os.path.isfile(...) # 判断是否是个文件
注意: 把两个路径合成一个时,不要直接拼字符串,而要通过 os.path.join(part1,part2)
函数,这样可以正确处理不同操作系统的路径分隔符。在Linux/Unix/Mac下,os.path.join()
返回这样的字符串: part1/part2
而Windows下会返回这样的字符串: part1\part2
1 import os 2 import shutil 3 4 file_dir = "D:\\Python_os\\os" # 注意 \\ ;windows 下是这么表示的;Linux 和 Mac 是 / 5 file_name = "test.txt" 6 file_abs = os.path.join(file_dir, file_name) # os.path.join(...) 表示路径链接 7 8 9 '''判断路径或文件''' 10 print (1,os.path.isabs(file_dir)) # 判断是否绝对路径 11 print (2,os.path.isabs(file_name)) 12 print (3,os.path.isabs(file_abs)) 13 print (4,os.path.exists(file_abs)) # 判断是否真实存在 14 print (5,os.path.exists(os.path.join(file_dir,"xxx"))) 15 print (6,os.path.isdir(file_dir)) # 判断是否是个目录 16 print (7,os.path.isdir(file_abs)) 17 print (8,os.path.isfile(file_dir)) # 判断是否是个文件 18 print (9,os.path.isfile(file_abs))
运行结果:
路径名、文件名分隔
os.path.split(...) # 分隔目录和文件名/文件夹名
os.path.splitdrive(...) # 分隔盘符(windows系统)
os.path.splitext(...) # 分隔文件和扩展名
运行结果:
这些合并、拆分路径的函数并不要求目录和文件要真实存在,它们只对字符串进行操作。
工作目录及创建文件夹操作
os.getcwd() # 获取当前工作目录
os.chdir(...) # 改变工作目录
os.listdir(...) # 列出目录下的文件
os.mkdir(...) # 创建单个目录 注意:创建多级用 os.makedirs()
os.makedirs(...) # 创建多级目录
1 import os 2 3 file_dir = "D:\\Python_os\\os" 4 5 print (os.getcwd()) # 获取当前工作目录 6 os.chdir(file_dir) # 改变工作目录 7 print (os.getcwd()) 8 print (os.listdir(file_dir)) # 列出当前工作目录的所有文件 Python2 不支持 os.listdir() Python3 会列出当前工作目录下的所有文件 9 os.mkdir("test_mkdir") # 在当前工作目录下创建文件夹 test_mkdir;注意不可存在相同文件夹,不然会报错 10 os.makedirs("test_mkdir\\test1") 11 os.chdir(".\\test_mkdir") # . 表示本级目录; .. 表示上级目录 12 print (os.getcwd()) 13 for i in range(2,6): # 使用for循环等,可方便的创建多个文件夹 14 dir_name = "test" + str(i) 15 os.mkdir(dir_name)
在执行了上述实例代码后,os 文件夹中新建了空的 test_mkdir 文件夹,而 test_dir 文件夹下也新建出了 test1 至 test5 的空文件夹
创建文件夹可能会出错,原因具体有:(1) path 已存在时(不管是文件还是文件夹) (2) 驱动器不存在 (3) 磁盘已满 (4) 磁盘是只读的或没有写权限
文件的创建及操作参见下一章节
删除文件夹/文件
os.rmdir(...) # 删除空文件夹 注意:必须为空文件夹 如需删除文件夹及其下所有文件,需用 shutil
os.remove(...) # 删除单一文件
shutil.rmtree(...) # 删除文件夹及其下所有文件
在上方示例的文件夹基础上,操作删除 test1 文件夹 (空文件夹可用 os.rmdir() ),删除 test_mkdir 及其下所有文件();示例代码如下
1 import os 2 import shutil 3 4 file_dir = "D:\\Python_os\\os" 5 6 ''' 删除文件/文件夹 ''' 7 os.chdir(file_dir+"\\test_mkdir") 8 print(os.getcwd()) # 确保当前工作目录 9 print(os.listdir(os.getcwd())) # 查看当前文件夹下所有文件 10 os.rmdir("test1") # 删除 test1 文件夹(空文件夹) 11 print(os.listdir(os.getcwd())) 12 os.chdir("..\\") 13 print(os.getcwd()) # 切换到上级目录 14 print(os.listdir(os.getcwd())) 15 shutil.rmtree("test_mkdir") # 删除 test_mkdir 及其下所有文件
可见运行结果如下;产生异常的可能原因: (1) 路径不存在 (2) 路径子目录中有文件或下级子目录(os.rmdir) (3) 没有操作权限或只读
只是删除单一文件,则用 os.remove("test.txt") 即可;产生异常的可能原因: (1) 文件不存在 (2) 对该文件没有操作权限或只读。
重命名文件夹/文件
可对某一文件或文件夹重命名 os.rename(oldfileName, newFilename)
在os文件夹中新建文件夹 test,文件 test.txt
1 ''' 重命名文件夹/文件 ''' 2 os.chdir(file_dir) 3 print(os.listdir(os.getcwd())) 4 os.rename("test","test1") 5 os.rename("test.txt","test1.txt") # 重命名,注意需要带扩展名 6 print(os.listdir(os.getcwd()))
可见运行结果如下;产生异常的可能原因: (1) oldfilename 旧文件名不存在(文件须带扩展名) (2)newFilename 新文件已经存在
注意:新文件的扩展名不能遗漏,理论上需要保持类型一致;但这也不失为改文件类型的一种方式(相当于直接改文件的扩展名)
复制、移动文件夹/文件
须使用 shutil 模块,引入 import shutil
shutil.copyfile("old","new") # 复制文件,都只能是文件
shutil.copytree("old","new") # 复制文件夹,都只能是目录,且new必须不存在
shutil.copy("old","new") # 复制文件/文件夹,复制 old 为 new(new是文件,若不存在,即新建),复制 old 为至 new 文件夹(文件夹已存在)
shutil.move("old","new") # 移动文件/文件夹至 new 文件夹中
我们现在 D:\ 下创建新文件夹 Python_shutil ,然后工作目录切到该目录,直接使用 Python 来操作吧,参考代码如下:
1 import os 2 import shutil 3 4 os.chdir("D:\\") 5 os.mkdir("Python_shutil") 6 file_dir = "D:\\Python_shutil" 7 os.chdir(file_dir)
为演示复制、移动操作,我们在该文件夹下手动操作 新建文件夹 test_org、 test_copy 及 test_move; 新建文件 test.txt test1.txt , 两者内容不同
Python 复制、移动的操作示例代码如下:
1 import os 2 import shutil 3 4 file_dir = "D:\\Python_shutil" 5 os.chdir(file_dir) 6 shutil.copyfile("test_org.txt","test_copy.txt") # copy test_org.txt 为 test_copy.txt 若存在,则覆盖 7 shutil.copyfile("test_org.txt","test1.txt") # 存在,覆盖 8 shutil.copytree("test_org","test_copytree") # copy test_org 为 test_copytree(不存在的新目录) 9 shutil.copy("test_org.txt","test_copy1.txt") # 同 copyfile 10 shutil.copy("test_org.txt","test_copy") # 将文件 copy 至 目标文件夹中(须存在) 11 shutil.copy("test_org.txt","test_xxx") # 将文件 copy 至 目标文件(该文件可不存在,注意类型!) 12 print os.listdir(os.getcwd()) 13 shutil.move("test_org.txt","test_move") # 将文件 move 至 目标文件夹中 14 shutil.move("test_org","test_move") # 将文件夹 move 至 目标文件夹中 15 print os.listdir(os.getcwd())
转载于:https://www.cnblogs.com/feeland/p/4463682.html
Python学习(九)IO 编程 —— 文件夹及文件操作相关推荐
- python学习笔记---IO编程【廖雪峰】
IO编程 IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口 ...
- python学习(九) 网络编程学习--简易网站服务器
python `网络编程`和其他语言都是一样的,服务器这块步骤为: `1. 创建套接字` `2. 绑定地址` `3. 监听该描述符的所有请求` `4. 有新的请求到了调用accept处理请求` Pyt ...
- Python学习之面向对象编程
Python学习目录 在Mac下使用Python3 Python学习之数据类型 Python学习之函数 Python学习之高级特性 Python学习之函数式编程 Python学习之模块 Python学 ...
- python文件夹在哪_Python文件夹与文件的相关操作(推荐)
最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模 ...
- Python 学习笔记(3)对txt文件的读与写操作(下)
上一章节我们讨论了如何对txt文本文件进行读写操作,这一张将讨论如何进行二进制文件的写与读.<Python 学习笔记(3)对txt文件的读与写操作(上)>的链接如下https://blog ...
- Python文件夹与文件的操作
最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模 ...
- python修改文件后缀_python实现遍历文件夹修改文件后缀
本文实例为大家分享了python实现遍历文件夹修改文件后缀的具体代码,供大家参考,具体内容如下 用法 python Modifer.py ./ -fp java xml # coding:utf-8 ...
- python创建多个文件_Python创建文件夹与文件的快捷方法
这篇文章主要给大家介绍了关于Python创建文件夹与文件的快捷方法以及批量创建文件夹的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学 ...
- python的文件夹_Python文件夹与文件的操作
最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模 ...
最新文章
- 004-ubuntu安装配置SSH服务
- boost::math模块查找正态分布的均值或标准差的示例
- PHP+Mysql实现协同办公OA系统源码演示下载
- acquireSharedInterruptibly
- Mocha 和 Chai 入门初探
- STM32之串口例程
- python03_Python中的列表、元组、字典和集合
- ICE通信之IceGrid服务(一)
- 瑞友杯虚拟化征文---瑞友天翼应用虚拟化之实战演示
- smartadmin mysql_Smart Admin
- cpu顶盖怎么看步进_CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
- PN结的形成及其单向导电性
- mac怎么无线打印机连接到服务器,Mac如何连接打印机-Mac连接打印机教程 - 河东软件园...
- 深秋云台行:少爷的云台山之旅
- uniapp接入谷歌广告
- 最小二乘拟合问题求解算法(含python代码)
- stm32—火焰传感器的初步使用
- 在macOS上运行bitcoin客户端
- 批量生成图片的数据增强常用的脚本
- WPS格式转换成Word的方法
热门文章
- leetcode - 673. 最长递增子序列的个数
- 怎样求信号中的RMS值?
- 傅里叶变换对噪声进行频谱分析
- OpenCV--fstream格式化读取坐标数据存为vector
- 利用RobHess源码实现SIFT算法及RANSAC去错的图像特征提取匹配及去除错匹配
- ImageMagick 拆分透明PNG 合并JPG和Alpha Mask
- 数据挖掘之数理统计与常见分布与假设检验
- toj 4612 A Shooting Game
- python消费kafka逻辑处理导致cpu升高_大数据技术之一次KAFKA消费者异常引起的思考...
- linux stoping redis,redis的cluster集群模式shell一键启动/停止/重启/清缓存脚本