文件处理的函数和方法
来源:互联网 发布:软件项目建议书 编辑:程序博客网 时间:2024/06/05 02:24
使用Open()函数可打开文件,语法格式如下:
file_handler = open(filename,[,mode[,bufsize]]
filename是你要操作的文件名,如果不在当前路径,需指出具体路径。mode是打开文件的模式,表示你要如何操作文件,bufsize表示是否使用缓存。
Table 1. mode
Table 2. bufsize
open()函数返回一个文件对象,我们可通过read()或write()函数对文件进行读写操作,下面是一些文件对象方法:
Table 3. 文件对象方法
2. 示例
文件的打开或创建
#!/usr/bin/env python#-*- encoding:UTF-8 -*-filehandler = open('test.txt','w') #以写模式打开文件,如果文件不存在则创建filehandler.write('this is a file open/create test.\nthe second line.')filehandler.close()
#!/usr/bin/env python#-*- encoding:UTF-8 -*-filehandler = open('test.txt','a') #以追加模式打开文件,如果文件不存在则创建filehandler.write('\nappend the text in another line.\n')filehandler.close()
读取文件
#!/usr/bin/env python#-*- encoding:UTF-8 -*-filehandler = open('test.txt','r') #以读方式打开文件,rb为二进制方式(如图片或可执行文件等) print 'read() function:' #读取整个文件print filehandler.read() print 'readline() function:' #返回文件头,读取一行filehandler.seek(0)print filehandler.readline() print 'readlines() function:' #返回文件头,返回所有行的列表filehandler.seek(0)print filehandler.readlines() print 'list all lines' #返回文件头,显示所有行filehandler.seek(0)textlist = filehandler.readlines()for line in textlist: print lineprint 'seek() function' #移位到第32个字符,从33个字符开始显示余下内容filehandler.seek(32)print filehandler.read()print 'tell() function' #移位到文件头,从头开始显示2位字符filehandler.seek(0)print filehandler.readline() #显示第一行内容print filehandler.tell() #显示当前位置print filehandler.readline() #显示第二行内容print filehandler.read() #显示余下所有内容filehandler.close() #关闭文件句柄
文件系统操作
#!/usr/bin/env python#-*- encoding:utf-8 -*-import os,fnmatch,globfor fileName in os.listdir ( '/root' ): #列出/root目录内容,不包括.和.. print fileName os.mkdir('py') #在当前目录下创建一个py目录,且只能创建一层os.rmdir( 'py') #在当前目录下删除py目录,且只能删除一层os.makedirs('py/aa') #可创建多层目录os.removedirs('py/aa') #可删除多层目录print 'demonstration fnmatch module' for fileName in os.listdir ( '/root/python/file' ): if fnmatch.fnmatch(fileName,'*.txt'): #利用UNIX风格的通配,只显示后缀为txt的文件 print fileNameprint 'demonstration glob module'for fileName in glob.glob ( '*.txt' ): #利用UNIX风格的通配,只显示后缀为txt的文件 print fileName
获取文件状态
#!/usr/bin/env python#-*- encoding:UTF-8 -*-import os,time,statfileStats = os.stat ( 'test.txt' ) #获取文件/目录的状态fileInfo = {'Size':fileStats [ stat.ST_SIZE ], #获取文件大小'LastModified':time.ctime( fileStats [ stat.ST_MTIME ] ), #获取文件最后修改时间'LastAccessed':time.ctime( fileStats [ stat.ST_ATIME ] ), #获取文件最后访问时间'CreationTime':time.ctime( fileStats [ stat.ST_CTIME ] ), #获取文件创建时间'Mode':fileStats [ stat.ST_MODE ] #获取文件的模式}#print fileInfofor field in fileInfo: #显示对象内容 print '%s:%s' % (field,fileInfo[field])#for infoField,infoValue in fileInfo:# print '%s:%s' % (infoField,infoValue)if stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ): #判断是否路径 print 'Directory. 'else: print 'Non-directory.'if stat.S_ISREG ( fileStats [ stat.ST_MODE ] ): #判断是否一般文件 print 'Regular file.'elif stat.S_ISLNK ( fileStats [ stat.ST_MODe ] ): #判断是否链接文件 print 'Shortcut.'elif stat.S_ISSOCK ( fileStats [ stat.ST_MODe ] ): #判断是否套接字文件 print 'Socket.'elif stat.S_ISFIFO ( fileStats [ stat.ST_MODe ] ): #判断是否命名管道 print 'Named pipe.'elif stat.S_ISBLK ( fileStats [ stat.ST_MODe ] ): #判断是否块设备 print 'Block special device.'elif stat.S_ISCHR ( fileStats [ stat.ST_MODe ] ): #判断是否字符设置 print 'Character special device.'
#!/usr/bin/env python#-*- encoding:UTF-8 -*-import os.pathfileStats = 'test.txt'if os.path.isdir ( fileStats ): #判断是否路径 print 'Directory.'elif os.path.isfile ( fileStats ): #判断是否一般文件 print 'File.'elif os.path.islink ( fileStats ): #判断是否链接文件 print 'Shortcut.'elif os.path.ismount ( fileStats ): #判断是否挂接点 print 'Mount point.'
stat模块描述了os.stat(filename)返回的文件属性列表中各值的意义。我们可方便地根据stat模块存取os.stat()中的值。
串行化文件
#!/usr/bin/env python#-*- encoding:UTF-8 -*-import picklefilehandler = open('pickle.txt','w')text = ['this is a pickle demonstrate','aa','bb']pickle.dump(text,filehandler) #把text的内容序列化后保存到pickle.txt文件中filehandler.close()filehandler2 = open('pickle.txt')textlist = pickle.load(filehandler2) #还原序列化字符串print textlistfilehandler2.close()#cpickle是用C写的pickle模块,比标准的pickle速度快很多,使用方法同pickle。
内存文件
#!/usr/bin/env python#-*- coding: utf-8 -*-import StringIOfileHandle = StringIO.StringIO ( "Let freedom ring." ) #create file in memoryprint fileHandle.read() # "Let freedom ring."fileHandle.close()#cStringIO是用C写的StringIO模块,执行速度比StringIO快。
shutil模块是一个高级的文件处理模块,可实现文件的拷贝、删除等操作。
0 0
- 文件处理的函数和方法
- 读取文件内容到int数组的函数处理方法
- 处理文件的方法
- PHP处理文件和操作系统的相关函数
- 打开文档文件的处理过程和函数
- "删不掉的文件" 处理方法
- 文件处理的一些方法
- 批量处理文件的方法
- 通过Python的内置字符串处理函数来处理字符串的方法和整理
- 常用文件路径和文件名处理函数
- VC++文件路径和文件名处理函数
- 常用文件路径和文件名处理函数
- VC++文件路径和文件名处理函数
- fseek与 ftell函数和获取文件长度的方法
- 判断文件结束的几种方法和eof()函数
- 判断文件结尾的方法(feof函数和EOF)
- 使用VBA操作文件(2):处理文件的VBA函数和语句
- 哈希函数的常用构造方法和处理冲突方法
- apache ab压力测试结果分析
- centos 命令刻录光盘
- 如何记忆PHP数组函数,PHP那么多的数组函数怎么记忆?
- iOS多线程编程系类
- p12证书
- 文件处理的函数和方法
- 申请证书
- IO端口和IO内存的区别及分别使用的函数接口
- 浅谈getch(),getche(),getchar(),gets(),scanf()的区别
- [MYSQL]时间毫秒数转换
- calc常用
- 多线程锁竞争造成的开销
- This collider has some illegal parameters. Choose 'Reset' in the component popup menu to fix it
- 二层转发流程 (linux网络子系统学习 第六节 )