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解析xml文件实例分享
Dec 04 Python
python实现数据写入excel表格
Mar 25 Python
Python模拟简单电梯调度算法示例
Aug 20 Python
python: 自动安装缺失库文件的方法
Oct 22 Python
python实现维吉尼亚加密法
Mar 20 Python
python提取log文件内容并画出图表
Jul 08 Python
使用Python快乐学数学Github万星神器Manim简介
Aug 07 Python
python属于跨平台语言码
Jun 09 Python
Python修改DBF文件指定列
Dec 19 Python
Python创建简单的神经网络实例讲解
Jan 04 Python
详解用Python把PDF转为Word方法总结
Apr 27 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
Jun 29 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 中include()与require()的对比
2006/10/09 PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
zend optimizer在wamp的基础上安装图文教程
2013/10/26 PHP
php遍历目录与文件夹的多种方法详解
2013/11/14 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
FireFox JavaScript全局Event对象
2009/06/14 Javascript
对采用动态原型方式无法展示继承机制得思考
2009/12/04 Javascript
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
javascript中怎么做对象的类型判断
2013/11/11 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
2020/05/22 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
Python 专题二 条件语句和循环语句的基础知识
2017/03/19 Python
Python生成密码库功能示例
2017/05/23 Python
简述Python2与Python3的不同点
2018/01/21 Python
pygame库实现移动底座弹球小游戏
2020/04/14 Python
使用CSS3来制作消息提醒框
2015/07/12 HTML / CSS
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
一些Unix笔试题和面试题
2013/01/22 面试题
计算机专业自我鉴定
2013/10/15 职场文书
工地资料员岗位职责
2013/12/31 职场文书
yy结婚证婚词
2014/01/10 职场文书
学校万圣节活动方案
2014/02/13 职场文书
领导失职检讨书
2014/02/24 职场文书
2014年度考核工作总结
2014/12/24 职场文书
二手房购房意向书
2015/05/09 职场文书
高中同学会致辞
2015/08/01 职场文书