一、python中文件管理

文件管理是很多应用程序的基本功能和重要组成部分。Python可以使文件管理极其简单,特别是和其它语言相对比。

1.介绍

几乎以任何语言编写的众多应用程序中,文件管理是很重要的一部分。Python当然也不例外。在这篇文章中,我们将探究如何使用一些模块来操作文件。我们会完成读文件,写文件,增加文件内容的操作,写文件,增加文件内容的操作,还有一些另类的用法。

2.文件读写

最简单文件操作--读取

1 FileRead = open("test.txt",'r')2 FileRead.read() #读取文件所有内容,使用print(FileRead.read())函数输出文件内容

3 FileRead.close()

文件读取全部

1 FileRead = open("test.txt",'r')2 for lines inFileRead.readlines():3 print("lines:",lines.strip('\n'))4 FileRead.close()5

6 #输出结果

7 lines: Hello World8 lines: Welcome To Beijing

文件循环读取行

Python在读取一个文件时,会记住其在文件中的位置。所有在调用FileRead.readline()的时候会从上次读取的位置开始

1 FileRead = open("test.txt",'r')2 print(FileRead.readline().strip('\n')) #读取第一行数据

3 print(FileRead.readline().strip('\n')) #读取第二行数据

4 FileRead.close()

文件读取行操作

使用seek(0)将文件读取的行位置标记到指定的位置

1 FileRead = open("test.txt",'r')2 print(FileRead.readline().strip('\n')) #读取第一行数据

3 FileRead.seek(0) #将上次读取的位置调回到首行位置

4 print(FileRead.readline().strip('\n')) #读取第一行数据

5 FileRead.close()

文件读取行操作

使用tell()获取python在文件中的当前位置

1 FileRead = open("test.txt",'r')2 print(FileRead.readline().strip('\n')) #读取第一行数据

3 print(FileRead.tell()) #获取python所在文件中的当前位置

4 print(FileRead.readline().strip('\n')) #读取第二行数据

5 FileRead.close()

获取python在文件中的当前位置

初级操作--写数据到文件

1 FileRead = open("test.txt",'w') #‘w’--是指文件将被写入数据,已有的数据将会被清空

2 FileRead.write('Hello Everybody!\nWelcome To China!') #被写入文件的数据,使用‘\n’可以实现换行操作

3 FileRead.close() #关闭文件句柄,每次读写文件都应该在最后面将文件关闭

文件写操作

1 FileRead = open("test.txt",'a') #‘a’--是指文件将被写入数据,已有的数据不会被清空,在已有数据后面追加下面要添加的数据

2 FileRead.write('Hello Everybody!\nWelcome To China!') #被写入文件的数据,使用‘\n’可以实现换行操作

3 FileRead.close() #关闭文件句柄,每次读写文件都应该在最后面将文件关闭

文件追加写操作

文件的高级操作--‘rb’ 'wb'--使用此模式打开文件是读写二进制文件

二、从现有文件中获取数据

使用Python中的模块,可以从现有文件中获取信息。使用“os”模块和“stat”模块可以获取文件的基本信息:

1 #!/usr/local/env python3

2 '''

3 Author:@南非波波4 Blog:http://www.cnblogs.com/songqingbo/5 E-mail:qingbo.song@gmail.com6 '''

7 importos8 importstat9 importtime10 FileStats = os.stat('test.txt') #获取文件的基本信息

11 FileInfo ={12 'Size' : FileStats [ stat.ST_SIZE ], #文件大小

13 'LastModified': time.ctime(FileStats[ stat.ST_MTIME]),14 'LastAccessed': time.ctime(FileStats[stat.ST_ATIME]),15 'CreationTime': time.ctime(FileStats[stat.ST_CTIME]),16 'Mode': FileStats [ stat.ST_MODE ]17 }18 print(FileStats) #os.stat_result(st_mode=33206, st_ino=6473924464448069, st_dev=434835, st_nlink=1, st_uid=0, st_gid=0, st_size=70, st_atime=1451980042, st_mtime=1451981189, st_ctime=1451979747)

19 print(FileInfo) #{'Size': 70, 'Mode': 33206, 'LastAccessed': 'Tue Jan 5 15:47:22 2016', 'LastModified': 'Tue Jan 5 16:06:29 2016', 'CreationTime': 'Tue Jan 5 15:42:27 2016'}

获取文件的相关信息

判断文件是不是目录

1 #!/usr/local/env python3

2 '''

3 Author:@南非波波4 Blog:http://www.cnblogs.com/songqingbo/5 E-mail:qingbo.song@gmail.com6 '''

7 importos8 importstat9 importtime10 defDirIf(FilenName):11 FileStats = os.stat(FilenName) #获取文件的基本信息

12 FileInfo ={13 'Size' : FileStats [ stat.ST_SIZE ], #文件大小

14 'LastModified': time.ctime(FileStats[ stat.ST_MTIME]),15 'LastAccessed': time.ctime(FileStats[stat.ST_ATIME]),16 'CreationTime': time.ctime(FileStats[stat.ST_CTIME]),17 'Mode': FileStats [ stat.ST_MODE ]18 }19 if stat.S_ISDIR( FileStats[ stat.ST_MODE ] ): #判断文件是不是目录

20 returnTrue21 else:22 return False

判断目录函数封装

对上面封装的函数进行调用的方法:

if DirIf('test.txt') == True:

print("目录")

elif DirIf('test.txt') == False:

print('非目录')

判断文件类型

1 #!/usr/local/env python3

2 '''

3 Author:@南非波波4 Blog:http://www.cnblogs.com/songqingbo/5 E-mail:qingbo.song@gmail.com6 '''

7 importos8 importstat9

10 FileStats = os.stat('test.txt')11 FileMode =FileStats[stat.ST_MODE]12 if stat.S_ISREG(FileStats[stat.ST_MODE]): #普通文件判断

13 print('Regular file.')14 elif stat.S_ISDIR(FileStats[stat.ST_MODE]): #目录文件判断

15 print('Directory.')16 elif stat.S_ISLNK(FileStats[stat.ST_MODE]): #快捷方式(链接)文件

17 print('Shortcut.')18 elif stat.S_ISSOCK(FileStats[stat.ST_MODE]): #套接字文件

19 print('Socket.')20 elif stat.S_ISFIFO(FileStats[stat.ST_MODE]): #命名管道文件

21 print('Named pipe.')22 elif stat.S_ISBLK(FileStats[stat.ST_MODE]): #块设备文件

23 print('Block special device.')24 elif stat.S_ISCHR(FileStats[stat.ST_MODE]): #特殊字符型文件

25 print('Character special device.')

文件类型判断

1 importos.path2

3 FileStats = 'test.txt'

4 if os.path.isdir(FileStats): #判断文件是否是目录

5 print('Directory.')6 elif os.path.isfile(FileStats): #判断文件是否是文件

7 print('File.')8 elif os.path.islink(FileStats): #判断文件是否是快捷方式(链接)文件

9 print('Shortcut.')10 elif os.path.ismount(FileStats): #判断文件是否是挂载文件

11 print('Mount point.')

使用os.path()判断文件类型

获取文件中的行数

defCountnum(filename):

files=open(filename)

data=files.read()

files.flush()

files.close()return data.count('\n')

三、python对目录的操作

和普通文件一样,关于目录的操作也很容易掌握。首先,列出一个目录的内容:

1 importos2 for fileName in os.listdir ( '/'):3 print(fileName)

获取根下所有的目录名称

创建目录

import os

os.mkdir('testDir')

创建多级目录

import os

os.makedirs('testDir/test2/test3/test4') #os.makedirs()

删除多级空目录

import os

os.removedirs('testDir/test2/test3/test4')

删除目录

import os

os.rmdir('testDir')

四、python对特定类型的文件进行操作

使用fnmatch模块显示'.txt'和'.exe'文件名

1 importfnmatch2 importos3 for FileName in os.listdir('/'):4 if fnmatch.fnmatch(FileName,'*.txt'):5 print(open(FileName).read())6 elif fnmatch.fnmatch(FileName,'*.exe'):7 print(FileName)

python搜索指定类型的文件

“fnmatch”模块支持正则表达式:

importfnmatchimportosimportre

FilePattern= fnmatch.translate('*.txt')for FileName in os.listdir('./'):ifre.match(FilePattern,FileName):print('Text file.')

使用glob模块查找一种类型的文件比较方便

importglobfor FileName in glob.glob('*.txt'):print(FileName)print('Text file.')

使用数字匹配文件名

importglobfor FileName in glob.glob ( '[0-9].txt'):print(Filename)

五、数据编组

使用前一节中介绍的模块,可以实现在文件中对字符串的读写。然而,有的时候,你可能需要传递其它类型的数据,如list、tuple、dictionary和其它对象。在Python中,你可以使用Pickling来完成。你可以使用Python标准库中的“pickle”模块完成数据编组。

编组一个包含数字和字符的列表:

#!/usr/local/env python3

'''Author:@南非波波

Blog:http://www.cnblogs.com/songqingbo/

E-mail:qingbo.song@gmail.com'''

importpickle

FileHandle= open( 'PickleFile.txt','wb')

TestList= ['This',2,'is',1,'a',0,'test.']

pickle.dump(TestList,FileHandle )

FileHandle.close()

拆分编组:

#!/usr/local/env python3

'''Author:@南非波波

Blog:http://www.cnblogs.com/songqingbo/

E-mail:qingbo.song@gmail.com'''

importpickle

FileHandle= open('PickleFile.txt','rb') #注意要加'b'进行二进制读写操作,否则报错

TestList =pickle.load(FileHandle)print(TestList)

FileHandle.close()

错误

TypeError: must be str, not bytes错误:

解答: 写文件处 open(filename, 'w').write 应该写为 open(filename, 'wb').write

复杂编组:

importpickle

FileHandle= open('PickleFile.txt','wb')

TestList= [ 123, { 'Calories' : 190 }, 'swht', [ 1, 2, 7] ]

pickle.dump(TestList,FileHandle)

FileHandle.close()

拆组:

importpickle

FileHandle= open('PickleFile.txt','rb')

TestList=pickle.load(FileHandle)print(TestList)

FileHandle.close()

比较:在python2.7版本里还有一个模块,相对于pickle模块而言,处理速度更快。当然在python3已经将其去掉,或者将其性能整合到pickle模块中了。

#!/usr/local/env python2

'''Author:@南非波波

Blog:http://www.cnblogs.com/songqingbo/

E-mail:qingbo.song@gmail.com'''

importcPickle

FileHandle= open('PickleFile.txt','wb')

TestList= [ 123, { 'Calories' : 190 }, 'swht', [ 1, 2, 7] ]

cPickle.dump(TestList,FileHandle)

FileHandle.close()

六、创建虚拟文件

你用到的许多模块包含需要文件对象作为参数的方法。但是,有时创建并使用一个真实的文件并让人感到有些麻烦。所幸的是,在Python中,你可以使用“StringIO”或者“cStringIO”模块来创建文件并将其保存在内存中,但很不幸的是,这两个模块在python3中都已经被移除。如果你使用的是python2的环境,可以尝试使用一下:

#!/usr/local/env python2

'''Author:@南非波波

Blog:http://www.cnblogs.com/songqingbo/

E-mail:qingbo.song@gmail.com'''

importStringIO

FileHandle= StringIO.StringIO("Let freedom ring") #创建的文件存在内存中

print(FileHandle.read()) #"Let freedom ring."

FileHandle.close()

#!/usr/local/env python2

'''Author:@南非波波

Blog:http://www.cnblogs.com/songqingbo/

E-mail:qingbo.song@gmail.com'''

importcStringIO

FileHandle= cStringIO.cStringIO("Let freedom ring") #创建的文件存在内存中

print(FileHandle.read()) #"Let freedom ring."

FileHandle.close()

总结:

文件管理,是众多编程语言的程序员在编写应用程序是经常遇到的问题。幸好,和其它语言相比,Python使其出乎意料地容易。Python的标准库中提供了许多相关的模块帮助程序员解决这方面的问题,而它的面向对象的机制也简化了操作。

原文链接:http://blog.csdn.net/wwwjfy/article/details/2575942

python 文件管理_python 文件操作相关推荐

  1. python文件句柄_Python文件操作

    classfile(object):def close(self): #real signature unknown; restored from __doc__ 关闭文件""&q ...

  2. python删除文件某行_python 文件操作删除某行的实例

    python 文件操作删除某行的实例 使用continue跳过本次写循环就可以了 #文本内容 Yesterday when I was young 昨日当我年少轻狂 The tasting of li ...

  3. python 对 yaml 文件操作

    python 对 yaml 文件操作 #!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Introduce : p ...

  4. Python实现tab文件操作

    Python实现tab文件操作 # -*- coding:gbk -*- import os class TABFILE:     def __init__(self, filename, dest_ ...

  5. python怎么读取文件-python怎么读写文件操作

    本节内容:I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input/ ...

  6. python处理excel教程实例-python 读写excel文件操作示例【附源码下载】

    本文实例讲述了python 读写excel文件操作.分享给大家供大家参考,具体如下: 对excel文件的操作,python有第三方的工具包支持,xlutils,在这个工具包中包含了xlrd,xlwt等 ...

  7. Python中的文件操作和异常

    Python中的文件操作和异常 文章目录 Python中的文件操作和异常 一.文件 01. 文件的概念 1.1 文件的概念和作用 1.2 文件的存储方式 文本文件和二进制文件 02. 文件的基本操作 ...

  8. Python os模块文件操作(二)

    Python os模块文件操作(二) os模块对文件夹和文件的操作很多.可以先看: https://blog.csdn.net/weixin_43790276/article/details/9867 ...

  9. Python os模块文件操作(一)

    Python os模块文件操作(一) 一.文件描述符 在使用代码对文件进行操作时,为了指定操作的文件,避免不了要使用文件描述符,所以我们先介绍什么是文件描述符. 操作系统为了高效管理已经被打开的文件, ...

最新文章

  1. 阿里云网盘,开放申请啦!非会员下载 10MB/s!有图有真相!
  2. R语言--如何退出terminal下的环境
  3. 安卓设置Activity切换动画无效的问题
  4. C++之typename
  5. 自适应网站设计对百度友好的关键:添加applicable-device标签(转)
  6. 2016012072+张济吨+散列函数的应用及其安全性
  7. C# 数组比较--取得两个集合的交集,差集,并集的方法
  8. SVPWM调制的simulink仿真
  9. java 项目启动后页面乱码_java生成的Html打开后展示乱码
  10. https 双向认证基本配置学习
  11. IaaS(基础设施即服务),PaaS(平台即服务),SaaS(软件即服务)的区别
  12. 使用Rasterio读取栅格数据
  13. Phaser3初体验
  14. Python 爬取优美图库图片
  15. 电子元器件基础知识:电感的结构和特性
  16. 找一个脚本大师做师傅,认真的
  17. [软件工具][原创]加减乘除自动出题带答案不重复生成可代替加减法印章使用教程
  18. 阿里中台变“厚”,企业中台路在何方?
  19. vue 动态获取的图片路径不显示_Vue 动态图片加载路径问题和解决方法
  20. 西北工业大学计算机有调剂,2020年西北工业大学微电子学院硕士研究生调剂工作方案...

热门文章

  1. nodejs连接MongonDB和mysql进行CRUD
  2. html倒计时timer,js如何使用定时器实现倒计时功能
  3. python抽奖程序_Python编写抽奖式随机提问程序
  4. mysql数据库事务隔离级别是_数据库事务隔离级别-MySQL为例 · Sean
  5. 应用宝认领应用签名_腾讯应用宝认领应用步骤
  6. pythonloop是什么意思_python loop 英文问题
  7. selenium svg标签定位元素
  8. mongodb数据合并设计_MongoDB:将来自多个集合的数据合并成一个
  9. matlab soble滤波,MATLAB 图像滤波去噪分析及其应用
  10. Java数据结构Map List Set及Queue相关的类图