Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)


Posted in Python onMay 08, 2017

使用Python过程中,经常需要对文件和目录进行操作。所有file类/os/os.path/shutil模块时每个Python程序员必须学习的。

下面通过两段code来对其进行学习。

1. 学习 file对象

2. 学习os/os.path/shutil模块

1.file对象学习:

项目中需要从文件中读取配置参数,python可以从Json,xml等文件中读取数据,然后转换成Python的内容数据结构。

下面以Json文件为例,实现从Json文件中获取配置参数。

code运行环境:python27+eclipse+pydev
Json文件名字:config_file.json
Json文件path:C:\temp\config_file.json

Json文件中的内容:

{"user":"Tom","username":"root_tom","password":"Jerryispig","ipaddr":"10.168.79.172"}
{"user":"Jerry","username":"root_jerry","password":"Tomispig","ipaddr":"10.168.79.173"}

代码如下:

import json #use json file ,you must import json.  
  
def verify_file_class():  
  file_json=open(r'C:\temp\config_file.json','r') # open config_file.json file with 'r'  
  for each_line in file_json.readlines():     #read each line data  
    print each_line               # verify each line data by print each line data  
    
    each_line_dict = json.loads(each_line)    # each row of the data into the 'dict'type of python  
      
    print 'the type of the each_line_dict:{type}'.format(type=type(each_line_dict)) # verify whether is‘dict'type  
      
    print 'user is: {user}'.format(user=each_line_dict['user'])  
    print 'username is: {username}'.format(username=each_line_dict['username'])  
    print 'password is: {password}'.format(password=each_line_dict['password'])  
    print 'ipaddr is: {ipaddr} \n'.format(ipaddr=each_line_dict['ipaddr'])  
      
    #use username,password, ipaddr ( enjoy your programming ! )  
    
  file_json.close()  # don't forgot to close your open file before.  
  
if __name__ == '__main__':  
  verify_file_class()

运行结果:

{"user":"Tom","username":"root_tom","password":"Jerryispig","ipaddr":"10.168.79.172"}  
the type of the each_line_dict:<type 'dict'>  
user is: Tom  
username is: root_tom  
password is: Jerryispig  
ipaddr is: 10.168.79.172   
  
{"user":"Jerry","username":"root_jerry","password":"Tomispig","ipaddr":"10.168.79.173"}  
the type of the each_line_dict:<type 'dict'>  
user is: Jerry  
username is: root_jerry  
password is: Tomispig  
ipaddr is: 10.168.79.173

学习os/os.path/shutil模块

在任何一个稍微大一点的项目中,少不了的需要对目录进行各种操作,

比如创建目录,删除目录,目录的合并等各种有关目录的操作。

下面以一段code为例,来实现对os/os.path/shutil模块的学习。

下面的code实现的是删除文件夹installation内的所有文件(里面有文件和文件夹),

注意:是删除文件夹installation里面所有的文件,并不删除installation这个文件夹。

代码如下:

code运行环境:python27+eclipse+pydev

import os 
import shutil  
 
 
def empty_folder(dir): 
  try: 
    for each in os.listdir(dir): 
      path = os.path.join(dir,each) 
      if os.path.isfile(path): 
        os.remove(path) 
      elif os.path.isdir(path): 
        shutil.rmtree(path) 
    return 0 
  except Exception as e: 
    return 1 
 
 
if __name__ == '__main__': 
  dir_path=r'D:\installation' 
  empty_folder(dir_path)

上面短短的几行代码,就包含了6个与os/os.path/shutil模块相关的API。分别是:

1. os.listdir(dir) 
2. os.path.join(dir, each) 
3. os.path.isfile(path) /os.path.isdir(path) 
4. os.remove(path) 
5. shutil.rmtree(path)

下面分别对上面6个最常见的与目录有关的API进行简单的学习。

1. os.listdir(dir)

这个函数返回指定目录下的所有文件和目录名组成的一个列表。

就是说返回一个列表,这个列表里的元素是由指定目录下的所有文件和目录组成的。

>>> import os 
>>> os.listdir(r'c:\\') 
['$Recycle.Bin', 'Documents and Settings', 'eclipse', 'hiberfil.sys', 'inetpub', 'Intel', 'logon_log.txt', 'MSOCache', 'pagefile.sys', 'PerfLogs'<span style="font-family: Arial, Helvetica, sans-serif;">]</span>

2. os.path.join(dir, each)

连接目录与文件名或目录

>>> import os 
>>> os.path.join(r'c:\doog',r's.txt') 
'c:\\doog\\s.txt' 
>>> os.path.join(r'c:\doog',r'file') 
'c:\\doog\\file'

3. os.path.isfile(path) / os.path.isdir(path)

os.path.isfile(path) 用于判断path是否为文件,若是文件,返回True,否则返回False。

os.path.isdir(path) 用于判断path是否为目录,若是目录,返回True,否则返回False。

>>> import os 
>>> filepath=r'C:\Program Files (x86)\Google\Chrome\Application\VisualElementsManifest.xml' 
>>> os.path.isdir(filepath) 
False 
>>> os.path.isfile(filepath) 
True

4. os.remove(path)

删除指定文件。无论文件是否是空,都可以删除。

注意:这个函数只能删除文件,不能删除目录,否则会报错。

>>> import os 
>>> os.removedirs(r'c:\temp\david\book\python.txt')

5. shutil.rmtree(path)

如果目录中有文件和目录,也就是说一个目录中不管有多少子目录,这些子目录里面不管有多少目录和文件。

我想删除这个上层目录(注意:是删除这个目录及其这个目录中的所有文件和目录)。

如何做呢?

就需要使用shutil模块中的rmtree()函数。

>>> import shutil 
>>> shutil.rmtree(r'C:\no1')

以上这篇Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python爬虫框架Scrapy安装使用步骤
Apr 01 Python
python3批量删除豆瓣分组下的好友的实现代码
Jun 07 Python
Python中datetime模块参考手册
Jan 13 Python
windows系统下Python环境搭建教程
Mar 28 Python
python3 破解 geetest(极验)的滑块验证码功能
Feb 24 Python
利用Python如何制作好玩的GIF动图详解
Jul 11 Python
python MNIST手写识别数据调用API的方法
Aug 08 Python
Python Django的安装配置教程图文详解
Jul 17 Python
浅谈Django2.0 加xadmin踩的坑
Nov 15 Python
新手学python应该下哪个版本
Jun 11 Python
python 决策树算法的实现
Oct 09 Python
python机器学习Github已达8.9Kstars模型解释器LIME
Nov 23 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
May 08 #Python
Python实现SSH远程登陆,并执行命令的方法(分享)
May 08 #Python
利用Celery实现Django博客PV统计功能详解
May 08 #Python
浅谈Python生成器generator之next和send的运行流程(详解)
May 08 #Python
python生成式的send()方法(详解)
May 08 #Python
python实时分析日志的一个小脚本分享
May 07 #Python
python分割列表(list)的方法示例
May 07 #Python
You might like
PHP伪静态页面函数附使用方法
2008/06/20 PHP
解析PHP跨站刷票的实现代码
2013/06/18 PHP
PHP输出缓存ob系列函数详解
2014/03/11 PHP
PHP常用文件操作函数和简单实例分析
2016/06/03 PHP
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
javascript 获取所有id中包含某关键字的控件的实现代码
2010/11/25 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
2010/11/28 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
让网页跳转到指定位置的jquery代码非书签
2013/09/06 Javascript
通过js获取div的background-image属性
2013/10/15 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
JavaScript forEach()遍历函数使用及介绍
2015/07/08 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
DropDownList控件绑定数据源的三种方法
2016/12/24 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
2017/05/03 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
vue 的keep-alive缓存功能的实现
2018/03/22 Javascript
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
[01:02:25]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS VG
2014/05/25 DOTA
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
[43:41]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
django 使用全局搜索功能的实例详解
2019/07/18 Python
法国隐形眼镜网站:VisionDirect.fr
2020/03/03 全球购物
小学师德师风整改措施
2014/10/27 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
消防安全培训工作总结
2015/10/23 职场文书
运动会口号霸气押韵
2015/12/24 职场文书
女性励志书籍推荐
2019/08/19 职场文书
python 判断文件或文件夹是否存在
2022/03/18 Python