Python之文件操作
2016-05-09 14:46
423 查看
文件读写操作
打开文件
file = open(fileName, mode),mode默认为"r"例如file = ope("test.txt", "r").以读的方式打开文件.文件操作完毕记得关闭.file.close()
其中,mode可以有以下选择:
"r" 以读方式打开,只能读文件.如果文件不存在则会发生异常
"r+" 以读写方式打开,文件可读可写,可写到文件的任何位置
"w" 以写方式打开,只能写文件.如果文件不存在则创建;如果文件存在则清空再打开
"w+" 以读写方式打开,文件可读可写.如果文件不存在则创建;如果文件存在则清空再打开
"a" 以追加的方式打开只写文件.若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾
"a+" 以追加的方式打开可读可写文件.若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾
"rb" 以二进制读方式打开,只能读文件.如果文件不存在则会发生异常
"wb" 以二进制写方式打开,只能写文件.如果文件不存在则创建;如果文件存在则清空再打开
"rt" 以文本读方式打开,只能读文件.如果文件不存在则发生异常
"wt" 以文本写方式打开,只能写文件.如果文件不存在则创建;如果文件存在则清空再打开
"rb+" 以二进制读方式打开,可以读写文件.如果文件不存在则发生异常
"wb+" 以二进制写方式打开,可以读写文件.如果文件不存在,则创建文件;如果文件存在则清空再打开
读文件
文件test.txt的内容为:<span style="font-size:14px;">11111111111-----aaaaaaaaa 22222222222-----bbbbbbbb 33333333333-----cccccccccc</span>
read([size]) size为读取大小,单位为byte,不指定size的话则一次性读全部内容
f = open("test.txt") print f.read() f.close() ''' 11111111111-----aaaaaaaaa 22222222222-----bbbbbbbb 33333333333-----cccccccccc '''
readline([size]) 按行读取,如果指定了size,可能只返回一行的一部分
f = open("test.txt") print f.readline() f.close() ''' <p>11111111111-----aaaaaaaaa</p>'''
readlines([size]) 把文件的每一行作为list的一个元素,返回整个list
f = open("test.txt") print f.readlines() f.close() ''' ['11111111111-----aaaaaaaaa\n', '22222222222-----bbbbbbbb\n', '33333333333-----cccccccccc'] '''
写文件
fp.write(str) 把str写到文件中,write()并不会在str后加上一个换行符fp.writelines(seq) 把seq的内容全部写到文件中(多行一次性写入).这个函数也只是忠实地写入,不会在每行后面加上任何东西.
清空文件内容
truncate()仅当以r+,rb+,"w","wb","wb+"等以可写模式打开的文件才能执行该功能
文件和文件夹操作
使用前先导入os模块.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()
返回指定目录下的所有文件和目录名:os.listdir()
函数用来删除一个文件:os.remove()
删除多个目录:os.removedirs(r"/home/python")
检验给出的路径是否是一个文件:os.path.isfile()
检验给出的路径是否是一个目录:os.path.isdir()
判断是否是绝对路径:os.path.isabs()
检验给出的路径是否真地存:os.path.exists()
返回一个路径的目录名和文件名:os.path.split()
分离扩展名:os.path.splitext()
获取路径名:os.path.dirname()
获取文件名:os.path.basename()
重命名:os.rename(old, new)
创建多级目录:os.makedirs(r"/home/python")
创建单个目录:os.mkdir("test")
获取文件属性:os.stat(file)
修改文件权限与时间戳:os.chmod(file)
获取文件大小:os.path.getsize(filename)
os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
练习:递归获取目录下所有文件名
def get_files(file_path): files = os.listdir(file_path) for file in files: file_full_dir = os.path.join(file_path, file) if os.path.isdir(file_full_dir): get_files(file_full_dir) else: print os.path.join(file_path, file_full_dir)
很容易理解,对目录下所有文件和文件夹,如果是文件则输出,如果是文件夹递归查找.
或者也可以用os.walk()来实现
def get_files(file_path): for fpathe, dirs, fs in os.walk(file_path): for f in fs: print os.path.join(fpathe, f)
返回的是一个三元tupple(dirpath,
dirnames, filenames),
其中第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件.
dirpath是一个string,代表目录的路径,
dirnames是一个list,包含了dirpath下所有子目录的名字,
filenames是一个list,包含了非目录文件的名字.这些名字不包含路径信息,如果需要得到全路径,需要使用 os.path.join(dirpath, name).
相关文章推荐
- Python中的除法
- Python 学习笔记
- python 如何反转序列
- Python中的Numpy入门教程
- Python 教程推荐
- 关联分析-Apriori法python代码注解
- Python基础(三)
- python利用paramiko连接远程服务器执行命令
- python利用paramiko连接远程服务器执行命令
- 正则表达式 python3.x (一)
- wxPython 客户端登录流程的拟定
- Skip the header of a file with Python's CSV reader
- wxPython通过py2exe编译的应用程序如何去掉黑框
- python3使用requests发闪存
- Python学习笔记:字符串(str)有关函数
- python中的闭包
- 安装过 python3.X 后,python 2.7.x 打不开 idle
- ImportError: no module named win32api
- python-百度语音识别与google语音识别测试
- 扯扯python调用rpc实现分布式系统