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 05 Python
Python def函数的定义、使用及参数传递实现代码
Aug 10 Python
基于进程内通讯的python聊天室实现方法
Jun 28 Python
Python 字符串与二进制串的相互转换示例
Jul 23 Python
Python re 模块findall() 函数返回值展现方式解析
Aug 09 Python
python同步两个文件夹下的内容
Aug 29 Python
python实现飞机大战游戏(pygame版)
Oct 26 Python
Python中求对数方法总结
Mar 10 Python
Python opencv相机标定实现原理及步骤详解
Apr 09 Python
Python命令行参数定义及需要注意的地方
Nov 30 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
Feb 22 Python
python基础入门之普通操作与函数(三)
Jun 13 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 时间日期操作实战
2011/08/26 PHP
php jsonp单引号转义
2014/11/23 PHP
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
理解Javascript_11_constructor实现原理
2010/10/18 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
2014/04/12 Javascript
深入理解Javascript中this的作用域
2014/08/12 Javascript
jquery小火箭返回顶部代码分享
2015/08/19 Javascript
Svg.js实例教程及使用手册详解(一)
2016/05/16 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
2017/01/19 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
JavaScript如何一次性展示几万条数据
2017/03/30 Javascript
Vue之Watcher源码解析(2)
2017/07/19 Javascript
JS验证输入的是否是数字及保留几位小数问题
2018/05/09 Javascript
解决vue点击控制单个样式的问题
2018/09/05 Javascript
Python中shutil模块的学习笔记教程
2017/04/04 Python
python使用TensorFlow进行图像处理的方法
2018/02/28 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
PyQt5 实现给窗口设置背景图片的方法
2019/06/13 Python
python tkinter实现屏保程序
2019/07/30 Python
Django中modelform组件实例用法总结
2020/02/10 Python
在pytorch中实现只让指定变量向后传播梯度
2020/02/29 Python
详解Python中import机制
2020/09/11 Python
CSS3中的display:grid,网格布局介绍
2019/10/30 HTML / CSS
高三地理教学反思
2014/01/11 职场文书
运动会稿件200字
2014/02/07 职场文书
幼儿园五一活动方案
2014/02/07 职场文书
贪污检举信范文
2015/03/02 职场文书
实习介绍信范文
2015/05/05 职场文书
交流会主持词
2015/07/02 职场文书
莫言获奖感言(全文)
2015/07/31 职场文书
使用pandas模块实现数据的标准化操作
2021/05/14 Python
Python常遇到的错误和异常
2021/11/02 Python
Python pyecharts绘制条形图详解
2022/04/02 Python
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏