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网络编程学习笔记(四):域名系统
Jun 09 Python
跟老齐学Python之玩转字符串(1)
Sep 14 Python
python采用django框架实现支付宝即时到帐接口
May 17 Python
利用Python中的pandas库对cdn日志进行分析详解
Mar 07 Python
python实现杨辉三角思路
Jul 14 Python
python如何去除字符串中不想要的字符
Jul 05 Python
Python中pillow知识点学习
Apr 30 Python
OpenCV搞定腾讯滑块验证码的实现代码
May 18 Python
python+opencv实现摄像头调用的方法
Jun 22 Python
keras 特征图可视化实例(中间层)
Jan 24 Python
PyQt5事件处理之定时在控件上显示信息的代码
Mar 25 Python
python如何删除文件、目录
Jun 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下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
php的array_multisort()使用方法介绍
2012/05/16 PHP
解析PHP中的正则表达式以及模式匹配
2013/06/19 PHP
PHP 获取 ping 时间的实现方法
2017/09/29 PHP
Javascript 函数对象的多重身份
2009/06/28 Javascript
js定时器(执行一次、重复执行)
2014/03/07 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
2014/08/06 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
JS HTML5拖拽上传图片预览
2016/07/18 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
2016/09/09 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
OpenLayers3实现地图显示功能
2020/09/25 Javascript
python多线程编程中的join函数使用心得
2014/09/02 Python
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
Python实现中值滤波去噪方式
2019/12/18 Python
通过实例解析Python RPC实现原理及方法
2020/07/07 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
超级实用的8个Python列表技巧
2020/08/24 Python
SEPHORA新西兰官方网站:购买化妆品和护肤品
2016/12/02 全球购物
英国医生在线预约:Top Doctors
2019/10/30 全球购物
挂职学习心得体会
2014/09/09 职场文书
承诺书范本大全
2015/05/04 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python
python内置模块之上下文管理contextlib
2022/06/14 Python
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS