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的Django框架与认证系统整合的方法
Jul 24 Python
Python matplotlib的使用并自定义colormap的方法
Dec 13 Python
Python如何获得百度统计API的数据并发送邮件示例代码
Jan 27 Python
python3.7 sys模块的具体使用
Jul 22 Python
python给图像加上mask,并提取mask区域实例
Jan 19 Python
Python实现遗传算法(二进制编码)求函数最优值方式
Feb 11 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
May 17 Python
Keras自定义实现带masking的meanpooling层方式
Jun 16 Python
Tensorflow与Keras自适应使用显存方式
Jun 22 Python
Python‘==‘ 及 ‘is‘相关原理解析
Sep 05 Python
如何在windows下安装配置python工具Ulipad
Oct 27 Python
Django中的DateTimeField和DateField实现
Feb 24 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/05/29 PHP
php数据库备份还原类分享
2014/03/20 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
PHP中Session可能会引起并发问题
2015/06/26 PHP
PHP版本常用的排序算法汇总
2015/12/20 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
JSON对象 详解及实例代码
2016/10/18 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
解决vue组件中click事件失效的问题
2019/11/09 Javascript
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
python如何实现代码检查
2019/06/28 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
Pytorch的mean和std调查实例
2020/01/02 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
python cv2.resize函数high和width注意事项说明
2020/07/05 Python
python中random模块详解
2021/03/01 Python
Mytheresa英国官网:拥有160多个奢侈品品牌
2016/10/09 全球购物
美国鲜花递送:UrbanStems
2021/01/04 全球购物
应聘护士自荐信
2013/10/21 职场文书
小学班级口号大全
2015/12/25 职场文书
留学文书中的个人陈述,应该注意哪些问题?
2019/08/23 职场文书
选对餐饮营销策略,营业额才会上涨
2019/08/27 职场文书
Win11更新失败并提示0xc1900101
2022/04/19 数码科技