python文件处理笔记之文本文件
作者:wakeyo_J 发布时间:2022-10-30 22:38:32
文本文件具备初步存放、编辑各类数据的能力,并可以持久保留和数据共享。
1. 建立文件
建立文本文件有两种途径:一是通过Windows的“记事本”工具创建一个扩展名为“.txt”的文件,然后供程序调用。二是通过程序自动建立新文件。
1.1 文本文件代码实现
newfile = "g:\\t1.txt" #定义需要建立的文本名称和路径
b_new_file = open(newfile,"w") #用open函数建立一个新的文本文件
b_new_file.close() #关闭文件
print("%s成功建立!"%newfile)
效果:
1.2 代码编写分析
文本文件的名称
(1)文本名称,命名要符合命名内容,一般情况下以英文字母、数字、汉字开头的易于阅读的字符串组合。不能使用星号(*)等特殊符号开头的命名。
(2)文本名称是一个字符串,命名过程中需要考虑到转义符号对路径或名称的影响。如:“g:\t1.txt”中的“\t”本身就是一个横向制表符,如果用“g:\t1.txt”就会出错。另一种解决字符串转义符的方法是在字符串前加原始字符串限制符号(原生字符r或R)可以原样输出r“g:\t1.txt”。
(3)指定路径必须设置(在不同的解释器中,对于路径的设置有区别)
用open函数建立(打开)文件
open函数属于系统内置函数,支持对字符串或二进制文件的打开操作,返回可操作的文件对象。
使用格式:
open(file,mode=“w”)
file参数用于指定需要操作的文件名(可以同时只当文件路径);mode参数用于指定需要操作的方式。
r、w、x、a为打开文件的基本模式,对应这只读、只写、新建、追加四种打开方式;b、t、+、U与基本模式组合使用,对应二进制、文本、读写、通用换行符四种模式。
mode默认值为“rt”模式,意味着对文本文件进行读操作。目前,mode值常见可以组合的方式为“rb"、”wb“、”xb“、”ab“、”rt“、”wt“、”xt“、”at“、”r+“、”w+“、”x+“、”a+“。
用b_new_file.close()方法把新建立的文件关闭
如果不关闭新建立的文本文件,则打开的文件对象一直留存在内存中,如果打开的文件多了,容易出现内存溢出等错误。
2. 基本的读写文件
打开文本文件后,可以对文件进行基本的读写操作。
2.1 用文件对象write(s)方法写内容
f.write(s),f代表可写方式打开文件对象;s为将要写入文件的内容,write()方法把s内容写入文件f后,返回写入的字节数。
newfile = "g:\\t1.txt" #定义需要建立的文本名称和路径
b_new_file = open(newfile,"w") #用open函数建立一个新的文本文件
t_n = b_new_file.write("l like python!") #用文件对象write()方法写字符串
b_new_file.close() #关闭文件
print("往文件里写入%d字节内容"%t_n)
效果:
”w“模式打开的文本文件,在写入内容时,第二次写入的内容会覆盖第一次保存的内容,若要解决此问题,采用”a“模式打开文件。
2.2 用文件对象read()方法读取内容
f.read(size),f代表可读方式打开的文件对象;size为可选参数,若指定读取字节数,则读取指定大小字节的内容,若没有指定,则读取尽可能大的内容。
b_new_file = open(newfile,"r") #以只读方式打开文件
tt = b_new_file.read() #用文件对象read()方法读取内容
print(tt)
b_new_file.close()
效果:
2.3 连续用read()方法、write()方法操作文件
b_new_file = open(newfile,"r+") #用open函数建立一个新的文本文件
tt = b_new_file.read() #用文件对象read()方法读取内容
print(tt)
t_n = b_new_file.write("\n三酷猫!^_^") #继续往文件里写入新内容
b_new_file.close()
print("往文件里写入%d字节内容"%t_n)
效果:
注意:不鼓励连续读写操作方法,因为存在读写数据不确定性问题
3. 复杂的读写文件
在基础的读写存在上,可以考虑多行读写的操作。
1、一次写入多行
nums = ["one","two","three","four","five","six","seven"]
t = open(r"g:\t2.txt","a") #追加打开文件
for get_one in nums:
t.write(get_one+"\n") #将每个元素循环写入文件,行末加\n
t.close()
print("连续写入完成")
效果:
2、一次读一行
f.readline(s),f代表以可读模式打开的文件;s为可选参数,若设置指定大小的字节,则返回相应大小的字符串,若没有设定,则以行单位返回字符串。
t1 = open(r"g:/t2.txt","r")
dd = 1
while dd:
dd = t1.readline() #一次读一行
print(dd.strip()) #strip()去除字符串两端的空字符
效果:
3、以列表格式读取多行
t1 = open(r"g:/t2.txt","r")
t_s = t1.readlines() #以列表格式读取多行
print(t_s)
效果:
4、连续读特定字节数量的内容
f = open(r"g:/t2.txt","r")
print(f.readline(2)) #读取文件头2个字节
print(f.readline()) #继续读取同一行,剩余字节
print(f.read(4)) #继续读取4个字节
print(f.read(4))
效果:
5、在指定位置读内容
5.1 f.tell(),f代表打开的文件,tell()方法返回当前文件可以写入读写的位置(字节数)
f = open(r"g:/t2.txt","r")
print(f.readline(2)) #读取文件头2个字节
print(f.readline()) #继续读取同一行,剩余字节
print(f.read(4)) #继续读取4个字节
print(f.read(4))
print(f.tell()) #获取执行上述操作后的当前位置
print(f.read(1))
print(f.tell())
效果:
5.2 f.seek(offset[,whence])
f代表以打开的文件,seek()方法重新指定将要读写的当前位置。offset参数设置位置的偏移量的字节数,whence参数可选,确定文件起计位置,默认值为SEEK_SET(或0),代表从文件大的开始位置+偏移量来确定当前位置;SEEK_SET(或1),代表当前位置起计;SEEK_END(或2),代表从文件的结尾起计。
print(f.seek(17))
print(f.read(4))
效果:
在指定位置写内容
f3 = open(r"g:/t2.txt","w")
print(f3.seek(17))
f3.write('---')
f3.close()
效果:
4. 文件异常处理
f_n = r"g:\t3.txt"
flag = False
try: #异常捕捉开始
f = open(f_n,"r") #打开t3.txt文件
print(f.read())
flag=True
except: #捕捉异常
print("打开%s文件出错,请检查!"%f_n) #出错提示
finally: #是否出错,都强制执行下列代码
if flag: #如果文件打开顺利
f.close() #则关闭文件
print("文件做关闭处理!")
else: #文件打开出现异常
print("程序关闭")
效果:
5. 文件与路径
5.1 与路径相关的操作 获取程序运行的当前路径
os.path.abspath§,abspath()以字符串形式为返回平台归一化的绝对路径,p为指定的路径名称(字符型),若p为指定”(.)“,则代表当前路径。
import os
print(os.path.abspath(os.path.curdir)) #返回当前绝对路径
效果:
判断指定路径下是否存在文件
import os
print(os.path.exists(r"g:\\t1.txt")) #用exists()方法判断文件是否已经存在
效果:
exists§方法判断指定路径下的文件是否存在。若存在,则返回True,若不存在,则返回False。p为指定的来路径的文件字符串,也可以通过isfile()方法直接判断。
判断指定路径是否存在
isdir§方法判断指定路径是否存在,p为字符串格式的路径,存在返回True,不存在则返回False。
import os
print(os.path.isdir(r"g:\\")) #用isdir()方法判断路径是否存在
效果:
exists§方法也可以用来直接判断路径
import os
print(os.path.exists(r"g:\\")) #用exists()方法直接判断路径
效果:
建立文件夹(子路径)
利用os模块的makedirs§方法可以建立对应的文件夹,p为字符串形式的需要建立的路径,建立不成功,抛出OSError出错信息;建立成功,则在对应的路径下将发现新建立的文件夹。
import os
print(os.makedirs(r"g:\\files")) #在g盘建立files文件夹
效果:
5.2 动态指定路径下建立新文件
import os
import sys
get_cur_path = os.path.abspath(os.path.curdir)
f_n = get_cur_path+"\\files" #在当前路径建立子路径files
try:
if not os.path.isdir(f_n): #确认路径是否存在
os.makedirs(f_n) #不存在,建立子路径
except: #建立子路径过程发生异常
print("子文件夹%s建立出错!"%f_n) #提示建立出错
sys.exit() #退出程序
f_n = f_n+"\\t3.txt"
flag = False
try:
f =open(f_n,"w")
print(f.write("ok"))
flag=True
print("文件%s写入正常!"%f_n)
except:
print("打开%s文件出错,请检查!"%f_n)
finally:
if flag:
f.close()
print("文件做关闭处理!")
else:
print("程序关闭")
效果:
来源:https://blog.csdn.net/m0_55697123/article/details/119580003


猜你喜欢
- 下面这些命令可以在命令行下用isql执行,isql -E -Q "命令",isql.exe
- 同C语言、Java一样,Python中也存在条件选择和循环语句,其风格和C语言、java的很类似,但是在写法和用法上还是有一些区别。今天就让
- 本文只讨论Oracle中最常见的索引,即是B-tree索引。本文中涉及的数据库版本是Oracle8i。 一. 查看系统表中的用户索引 在Or
- 前言在开始之前,对time.After使用有疑问的朋友们可以看看这篇文章:https://www.aspxhome.com/article/
- “%”的使用格式符描述%s字符串 (采用str()的显示)%r字符串 (采用repr()的显示)%c
- 目录1、几个概念2、举个例子3、解决问题4、换个方法通常,当我们需要对对象的敏感属性或者不希望外部直接访问的属性进行私有化,但是某些时候我们
- 结合网上的资料,自己亲自的去安装了一次MySQL,安装版本是win7x64 5.7.16。在安装过程中出现并解决了如下问题:“mysql 服
- 上次帮朋友写过的一个简单切换效果,超级简单,但也比较适用.因为用到了CSS Sprite技术,DEMO中附带了IE6兼容png的JS.核心J
- 我就废话不多说了,直接 上代码吧!import kafka.api.PartitionOffsetRequestInfo;import ka
- create procedure test_tran as set xact_abort on -----用@@error判断,对于严重的错
- predict_proba 返回的是一个 n 行 k 列的数组,列是标签(有排序), 第 i 行 第 j 列上的数值是模型预测 第 i 个预
- 代码:import tensorflow as tfsess = tf.Session()check_point_path = 'v
- 由于本人经常装系统,每次装完系统之后都要重新安装一些软件,安装软件的时候又要上网查找安装的教程,比较麻烦,所以自己整理了MySQL5.7.2
- python中format的使用format函数这是一种字符串格式化的方法,用法如str.format()。基本语法是通过 {} 和 : 来
- Python中,如果函数体是一个单独的return expression语句,开发者可以选择使用特殊的lambda表达式形式替换该函数:la
- 一:PIL功能介绍与安装PIL,全称Python Image Library,主要作用是图像处理,可用于图片剪切、粘贴、缩放、镜像、水印、颜
- 本文以一个完整实例的形式实现了视频文件上传的功能。虽然是比较基础的应用,仍有一定的参考价值。分享给大家供大家参考之用。具体方法如下:首先,对
- 把文件夹dir1中后缀为'.jpg'的文件拷贝到文件夹dir2中:import globimport shutilimpor
- 由于文件夹可能有多层目录,因此需要对其进行递归遍历。本文采取了简单的协议定制,定义了五条命令,指令Head如下:Sync:标识开始同步文件夹
- 你的主页或者你管理的网站有各种密码需要保护,把密码直接放在数据库或者文件中存在不少安全隐患,所以密码加密后存储是最常见的做法。在ASP.NE