python 文件处理(转载)
本文给大家介绍Python文件处理相关知识,具体内容如下所示:
出处:https://www.jb51.net/article/80204.htm
1.文件的常见操作
文件是日常编程中常用的操作,通常用于存储数据或应用系统的参数。python提供了os、os.path、shutil等模块处理文件,其中包括最常用的打开文件,读写文件,赋值文件和删除文件等函数。
1.1文件的创建
python3.+中移除了python2中的全局file()函数,还保留了open()函数。文件的打开或创建可以使用函数open()。该函数可以指定处理模式,设置打开的文件为只读,只写,可读写状态。open()的声明如下:
1
|
open ( file , mode = 'r' , buffering = None , encoding = None , errors = None , newline = None , closefd = True ) |
参数说明:
•参数file是被打开的文件名称,如果文件file不存在,open()将创建名为name的文件,然后再打开该文件。
•参数mode是指文件的打开模式。文件的打开模式请参照以下内容。
•参数buffering是设置缓存模式。0表示不缓存,1表示缓存;如果大于1则表示缓冲区的大小,以字节为单位。
•参数encoding是设置文件的字符编码格式。
•open()函数会返回一个file对象,file 对象可以对文件进行各种操作 文件模式:
1
2
3
|
'r' open for reading (default) 'w' open for writing, truncating the file first 'x' create a new file and open it for writing |
创建一个新的文件,打开并写入
1
|
'a' open for writing, appending to the end of the file if it exists |
模式打开文件以追加
1
2
3
4
|
'b' binary mode二进制模式打开,可与其他模式一起使用 't' text mode (default) '+' open a disk file for updating (reading and writing) 'U' universal newline mode (deprecated)支持所有的换行符号 |
注意:图片、视频等文件必须使用b的模式进行读写。
1
2
3
4
5
6
7
8
|
message = ''' hello world,\n hello python,\n good time. ''' f = open ( 'test.txt' , 'w' ) f.write(message) f.close() |
代码说明:
•定义一个字符串变量
•以只写模式创建一个文件并写入
•将字符串变量写入文件
•关闭文件
1.2 文件的读取
文件的读取有多种方法,可以使用readline()、readlines()、或read()函数读取文件。
1.按行读取方式readline()
readline()每次读取文件的一行,需要循环读取文件。但是当文件指针移动到文件的末尾是,依然使用readline()读取文件将出现错误。因此程序中需要添加一个判断语句,判断时间指针是否在文件的尾部,并且通过该语句中断循环。示例如下:
1
2
3
4
5
6
7
8
9
10
|
# 使用readline模式读取文件 f = open ( 'test.txt' , 'r' ) while True : line = f.readline() if line: print (line) else : break f.close() #如果line = f.readline(2)则表示每次循环只读取两字节的内容,直到行的末尾 |
2.多行读取方式readlines()
1
2
3
4
5
6
|
# 多行读取文件 f = open ( 'test.txt' ) lines = f.readlines() for line in lines: print (line) f.close() |
3.一次性读取方式read()
读取文件最简单的方式就是使用read(),read()将文件中一次性读出所有内容,并赋值给字符串变量,但是当文件比较大的时候不建议使用read()的方式去读取文件,因为一次读取比较大的内容会消耗大量的内存,影响系统的性能。示例如下:
1
2
3
4
5
|
# 一次读取文件 f = open ( 'test.txt' , 'r' ) lines = f.read() print (lines) f.close() |
文件指针:
1
2
3
4
5
6
7
8
|
with open ( 'test.txt' , 'rb' ) as src: rd = src.read( 100 ) print (rd) print (src.seek(src.tell())) rd = src.read( 100 ) print (rd) print (src.seek(src.tell())) #每次读取100字节,然后返回指针的位置 |
4.with函数
通常我们使用open()打开一个文件并赋值给一个字符串变量来对文件进行操作,最后还需要进行手动关闭文件,这样写起来有点麻烦,下面我们可以使用with函数将文件打开与关闭写在一行函数上。
1
2
3
4
|
with open ( 'test.txt' , 'r' ) as src: da = src.read() print (da) #只读模式打开文件并赋值给src,然后对文件进行操作即可,代码与使用open()来操作文件相同。 |
1.3文件的写入
文件的写入有多种方法,可以使用write(),也可以使用writelines()方法写入文件。write()可以将字符串写入文件,writelines()可以将列表写入文件。示例如下:
1
2
3
4
5
6
|
m1 = 'hello world' l1 = [ 'good' , 'time' ] f = open ( 'test1.txt' , 'w' ) f.write(m1) f.writelines(l1) f.close() |
文件的追加:
1
2
3
4
|
m1 = 'hello python' f = open ( 'test1.txt' , 'a+' ) f.write(m1) f.close() |
1.4文件的删除
文件的删除需要使用os模块和os.path模块,os模块提供了系统的环境、文件、目录等操作系统的函数。 对于文件来说比较常用的os模块的函数如下:
•os.access(path,mode)#按照mode指定的权限进行访问
•os.chmod(path,mode)#改变文件的访问权限,mode用UNIX的权限符号表示
•os.open(filename,flag[,mode=0777])#按照mode指定的权限打开文件。默认情况下,给所有用户读、写、执行的权限
•os.remove(path)#删除path指定的文件
•os.rename(old,new)#重命名文件或目录,old表示原文件或目录,new表示新文件或目录
•os.stat(path)#返回path指定文件的所有属性
•os.fstat(path)#返回打开文件的所有属性
•os.startfile(filepath[,operation])#启动关联程序打开文件。例如,打开一个html文件,将启动IE浏览器
•os.tmpfile()#创建一个临时文件,文件创建在操作系统的临时目录中
注意:os模块的open()函数与内建的open()函数的用法不同。
os.path模块常用的函数如下:
•os.path.abspath(path)#返回path所在的绝对路径
•os.path.dirpath(path)#返回目录的路径
•os.path.exists(path)#判断文件是否存在
•os.path.getatime(filename)#返回文件的最后访问时间
•os.path.getctime(filename)#返回文件的创建时间
•os.path.getmtime(filename)#返回文件最后的修改时间
•os.path.getsize(filename)#返回文件的大小
os.path判断函数
•os.path.isabs(s)#测试路径是否是绝对路径
•os.path.isdir(path)#判断path指定的是否是目录
•os.path.isfile(path)#判断path指定的是否是文件
•os.path.split(p)#对路径进行分割,并以列表的方式返回
•os.path.splitext(p)#从路径中分割文件的扩展名
•os.path.splitdrive(p)#从路径中分割驱动器的名称
•os.walk(top,func,arg)#遍历目录树
示例如下:
1
2
3
4
5
6
|
import os if os.path.exists( '../test.txt' ): os.remove( 'test.txt' ) print ( 'is del' ) else : print ( 'no' ) |
1.5文件的复制
文件的复制有多种方法,下面我们来看一下第一种比较low的方式,就是读写的方式进行文件复制。示例如下:
1
2
3
4
5
6
|
#使用read()、write()实现文件复制 f1 = open ( '1.txt' , 'r' ) f2 = open ( '2.txt' , 'w' ) f2.write(f1.read()) f2.close() f1.close() |
第二种方法:
shutil模块,shutil模块是另外一个文件、目录的管理接口,提供了一些用于复制、目录的函数。copyfile()函数可以实现文件的复制,copyfile()函数的声明如下:
shuil.copyfile(src,dst)
•src表示源文件的路径,src是字符串类型
•dst表示目标文件的路径,dst是字符串类型
•src指向的文件复制到dst指向的文件
示例如下:
1
2
|
import shutil shutil.move( '1.txt' , '2.txt' ) |
1.6文件的重命名
os模块的函数rename()可以对文件或目录进行重命名。
1
2
|
import os os.rename( '1.txt' , '11.txt' ) |
使用shutil中的move()函数也可以实现文件重命名的目的。
1
2
|
import shutil shutil.move( '11.txt' , '1.txt' ) |
修改文件的后缀名:
1
2
3
4
5
6
7
|
import os files = os.listdir( '.' ) for filename in files: li = os.path.splitext(filename) #返回后文件名和后缀名的列表 if li[ 1 ] = = '.html' : newname = li[ 0 ] + '.htm' os.rename(filename,newname) |
glob模块用于对路径的匹配,返回符合给定条件的文件列表。glob模块的主要函数就是glob(),该函数返回符合同一匹配条件的多个文件。上面的呈现需要判断是否为html后缀,也可以使用glob()函数直接匹配文件名称。 匹配代码如下:
1
|
glob.glob( '*.html' ) |
glob还可以对路径做更对的匹配。例如,匹配C盘中以w开头的目录中所有的文本文件。
1
|
glob.glob( 'C:\\\w*\\*\\txt' ) |
1.7文件的搜索和替换
文件内容的搜索和替换可以使用字符串的查找和替换来实现。例如,在htllo.txt文件中查找字符串'hello',并统计'hello'出现的次数。代码如下:
1
|
python, equal to anything! |
以上内容给大家介绍了Python文件处理相关知识,希望对大家有所帮助!
python 文件处理(转载)的更多相关文章
- 转载 python文件复制的方法
Python复制文件的9种方法 51Testing软件测试网 17-11-1614:13 以下是演示"如何在Python中复制文件"的九种方法. 1.shutil copyfile ...
- python文件的md5加密方法
本文实例讲述了python文件的md5加密方法.分享给大家供大家参考,具体如下: 一.简单模式: from hashlib import md5 def md5_file(name): m = md5 ...
- Jython:java调用python文件之第三方包路径问题
本文转载自:http://blog.csdn.net/ztf312/article/details/51338060 本方法解决python代码的可移植性,不需要在新机器上配置python环境,只通过 ...
- Python文件基础操作(IO入门1)
转载请标明出处: http://www.cnblogs.com/why168888/p/6422270.html 本文出自:[Edwin博客园] Python文件基础操作(IO入门1) 1. pyth ...
- Python文件读写机制
Python提供了必要的函数和方法进行默认情况下的文件基本操作 文件打开方式: open(name[,mode[buf]]) name:文件路径 mode:打开方式 buf:缓冲buffering大小 ...
- python 文件读写操作(24)
以前的代码都是直接将数据输出到控制台,实际上我们也可以通过读/写文件的方式读取/输出到磁盘文件中,文件读写简称I/O操作.文件I/O操作一共分为四部分:打开(open)/读取(read)/写入(wri ...
- Linux下Python 文件内容替换脚本
Linux下Python 文件替换脚本 import sys,os if len(sys.argv)<=4: old_text,new_text = sys.argv[1],sys.argv[2 ...
- 【Python文件处理】递归批处理文件夹子目录内所有txt数据
因为有个需求,需要处理文件夹内所有txt文件,将txt里面的数据筛选,重新存储. 虽然手工可以做,但想到了python一直主张的是自动化测试,就想试着写一个自动化处理数据的程序. 一.分析数据格式 需 ...
- Python文件使用“wb”方式打开,写入内容
Python文件使用"wb"方式打开,写入字符串会报错,因为这种打开方式为:以二进制格式打开一个文件只用于写入.如果该文件已存在则将其覆盖.如果该文件不存在,创建新文件. 所以写入 ...
随机推荐
- Java前后端依赖
有时候我们的一个类需要依赖另外一个类,这种就是依赖关系,创建对象的工作一般由spring容器来完成然后注入给调用者,这种就是依赖注入. 代码可参考1227210565朋友空间 DispatcherSe ...
- unicode,gbk,utfF-8字符编码方式的区别
一.编码历史与区别 一直对字符的各种编码方式懵懵懂懂,什么ANSI UNICODE UTF-8 GB2312 GBK DBCS UCS……是不是看的很晕,假如您细细的阅读本文你一定可以清晰的理解他们. ...
- Python学习之路基础篇--10Python基础,函数进阶
1 命名空间 对于Python 来说命名空间一共有三种 1 内置命名空间 —— Python 解释器 就是Python 解释器一启动就可以使用的名字,储存在内置命名空间中.内置的名字在启动解释器的时候 ...
- Python学习之路基础篇--05Python基础+列表和元组
1 list # 增 city = ["wuhan", "shanghai", "chongqing", "changsha&qu ...
- Python多线程的运行及time.sleep()的应用
已知小明和其弟弟小白每月都需要生活费,二人同时从同一个账户中取钱,两人每人每月需要1000元,账户中现有余额3200元,如果卡内余额大于2000元,则父母不会存入,如果卡内余额小于2000元,则父母当 ...
- node.js一行一行的获取txt文件内容
node.js一行一行获取text文件代码: const readline = require('readline');//Readline是Node.js里实现标准输入输出的封装好的模块,通过这个模 ...
- python 编写登陆接口
#!/usr/bin/env python#_*_ coding:utf-8 _*_dic={ 'yts':{'password':'123','count':0}, 'nick':{'passwor ...
- advanceskeleton插件分身体和表情单独绑定的时候合并表情步骤
advanceskeleton插件分身体和表情单独绑定的时候合并表情使用的代码以及合并步骤 1.身体单独绑定 2.表情单独绑定 3.合并步骤 ①原有adv表情文件删掉除了curve组以外所有东西 删除 ...
- Java成神路上之设计模式系列教程之一
Java成神路上之设计模式系列教程之一 千锋-Feri 在Java工程师的日常中,是否遇到过如下问题: Java 中什么叫单例设计模式?请用Java 写出线程安全的单例模式? 什么是设计模式?你是否在 ...
- Exception和解决方案
org.hibernate.HibernateException: No Session found for current thread sessionFactory org.springframe ...