python文件处理笔记之文本文件

目录
  • 1. 建立文件
    • 1.1 文本文件代码实现
    • 1.2 代码编写分析
  • 2. 基本的读写文件
    • 2.1 用文件对象write(s)方法写内容
    • 2.2 用文件对象read()方法读取内容
    • 2.3 连续用read()方法、write()方法操作文件
  • 3. 复杂的读写文件
    • 1、一次写入多行
    • 2、一次读一行
    • 3、以列表格式读取多行
    • 4、连续读特定字节数量的内容
    • 5、在指定位置读内容
  • 4. 文件异常处理
  • 5. 文件与路径
    • 5.1 与路径相关的操作 获取程序运行的当前路径
    • 5.2 动态指定路径下建立新文件
  • 总结

文本文件具备初步存放、编辑各类数据的能力,并可以持久保留和数据共享。

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("程序关闭")

效果:

总结

到此这篇关于python文件处理笔记之文本文件的文章就介绍到这了,更多相关python处理文本文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python读写txt文本文件的操作方法全解析

    一.文件的打开和创建 >>> f = open('/tmp/test.txt') >>> f.read() 'hello python!\nhello world!\n' >>> f <open file '/tmp/test.txt', mode 'r' at 0x7fb2255efc00> 二.文件的读取 步骤:打开 -- 读取 -- 关闭 >>> f = open('/tmp/test.txt') >>&

  • python 如何将数据写入本地txt文本文件的实现方法

    一.读写txt文件 1.打开txt文件 file_handle=open('1.txt',mode='w') 上述函数参数有(1.文件名,mode模式) mode模式有以下几种: #w 只能操作写入 r 只能读取 a 向文件追加 #w+ 可读可写 r+可读可写 a+可读可追加 #wb+写入进制数据 #w模式打开文件,如果而文件中有数据,再次写入内容,会把原来的覆盖掉 2.向文件写入数据 第一种写入方式: # 2.1 write 写入 #\n 换行符 file_handle.write('hell

  • Python文件操作,open读写文件,追加文本内容实例

    1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('thefile.txt') try: all_the_text = file_object.read( ) finally: file_object.close( ) 注:不能把open语句放在try块里,因为当打开文件出现异常时,文件对象file_object无法执行close()方法. 2.读文件读文本文件input

  • python统计文本文件内单词数量的方法

    本文实例讲述了python统计文本文件内单词数量的方法.分享给大家供大家参考.具体实现方法如下: # count lines, sentences, and words of a text file # set all the counters to zero lines, blanklines, sentences, words = 0, 0, 0, 0 print '-' * 50 try: # use a text file you have, or google for this one

  • Python批量修改文本文件内容的方法

    Python批量替换文件内容,支持嵌套文件夹 import os path="./" for root,dirs,files in os.walk(path): for name in files: #print name if name.endswith(".html"): #print root,dirs,name filename=root+"/"+name f=open(filename,"r") fileconten

  • python计算文本文件行数的方法

    本文实例讲述了python计算文本文件行数的方法.分享给大家供大家参考.具体实现方法如下: filename = "somefile.txt" myfile = open(filename) lines = len(myfile.readlines()) print "There are %d lines in %s" % (lines, filename) 希望本文所述对大家的Python程序设计有所帮助.

  • python进阶教程之文本文件的读取和写入

    Python具有基本的文本文件读写功能.Python的标准库提供有更丰富的读写功能. 文本文件的读写主要通过open()所构建的文件对象来实现. 创建文件对象 我们打开一个文件,并使用一个对象来表示该文件: 复制代码 代码如下: f = open(文件名,模式) 最常用的模式有: 复制代码 代码如下: "r"     # 只读 "w"     # 写入 比如 复制代码 代码如下: >>>f = open("test.txt",&

  • python将多个文本文件合并为一个文本的代码(便于搜索)

    但是,当一本书学过之后,对一般的技术和函数都有了印象,突然想要查找某个函数的实例代码时,却感到很困难,因为一本书的源代码目录很长,往往有几十甚至上百个源代码文件,想要找到自己想要的函数实例谈何容易? 所以这里就是要将所有源代码按照目录和文件名作为标签,全部合并到一处,这样便于快速的搜索.查找,不是,那么查找下一个--于是很快便可以找到自己想要的实例,非常方便.当然,分开的源代码文件依然很有用,同样可以保留.合并之后的源代码文件并不大,n*100KB而已,打开和搜索都是很快速的.大家可以将同一种编

  • python实现搜索文本文件内容脚本

    本文介绍用python实现的搜索本地文本文件内容的小程序.从而学习Python I/O方面的知识.代码如下: import os #根据文件扩展名判断文件类型 def endWith(s,*endstring): array = map(s.endswith,endstring) if True in array: return True else: return False #将全部已搜索到的关键字列表中的内容保存到result.log文件中 def writeResultLog(allExi

  • python读取浮点数和读取文本文件示例

    从文本文件中读入浮点数据,是最常见的任务之一,python没有scanf这样的输入函数,但我们可以利用正规表达式从读入的字符串中提取出浮点数 复制代码 代码如下: import refp = open('c:/1.txt', 'r')s = fp.readline()print(s)aList = re.findall('([-+]?\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?',s) #使用正规表达式搜索字符串print(aList)for ss in aList:   

随机推荐