文章目录

  • 1 建立文件
  • 2 基本的读写文件
  • 3 复杂的读写文件
  • 4 文件异常处理
  • 5 文件与路径
    • 5.1 与路径相关的操作
    • 5.2 动态指定路径下建立新文件

1 建立文件

  • 新建文本文件的代码实现

    file_path = 'e:\\test.txt'           #定义需要建立的文本名称和路径
    new_file = open(file_path,'w')       #用open函数建立一个新的文本文件
    new_file.close()                     #用close()方法关闭新建的文件
    print("%s 成功建立!"%(file_path))    #提示新建文本成功
    

    执行结果如下:

  • 代码编写分析
    1. 文本名称和路径需要考虑转义符号的影响。如上方代码中的’e:\test.txt’ 字符串中的“\t”本是是一个横向制表符,如果直接使用将出错。取消转义的另一方法是在字符串前加原始字符串限制符号(r或R),如:file_path = r'e:\test.txt'

    2. open函数 建立(打开)文件
      open函数属于系统内置函数,支持对字符串或二进制文件的打开操作,返回可操作的文件对象。常用格式:open(fileName, mode='w'),mode参数的详细用法如下:

      mode参数值 功能描述
      ‘r’ 以只读方式打开已经存在的文件
      ‘w’ 以可写方式打开文件;若指定的文件不存在,则建立新文件
      ‘x’ 以可写方式建立一个新文件
      ‘a’ 以追加写入方式打开一个文件;若指定的文件不存在,则建立新文件,再追加写入
      ‘b’ 二进制模式
      ‘t’ 文本模式
      ‘+’ 以读写方式打开一个文件
      ‘U’ 通用换行符模式(不建议使用

      其中,r(只读)、w(只写)、x(新建)、a(追加)为打开文件的基本模式;b、t、+、U与基本模式组合使用,对应二进制、文本、读写、通用换行符;mode默认值为’rt’(读操作)。

    3. close() 方法关闭文件
      如果不关闭,则打开的文件对象一直存在内存中(直至操作系统退出或者被相关程序清理),容易出现内存溢出等错误。

2 基本的读写文件

  1. f.write(s)方法写内容
    含义:代表以可写方式打开的文件对象;s为将要写入文件的内容;返回写入的字节数。

    file_path = r'e:\test.txt'               #指定需要建立或打开的文本名称和路径
    new_file = open(file_path,'w')           #用open函数建立一个新的文本文件
    t_n = new_file.write('I like Python!')   #用文件对象write()方法写字符串
    new_file.close()                         #用close()方法关闭新建的文件
    print("往文件里写入%d字节内容"%(t_n))     #提示往文件里写入的字节数
    

    执行结果如下:

    注意:第二次执行该代码时,文本内容不变,说明以’w’模式打开文本文件,往里面写内容时,是从文件开始写的,第二次写的内容会覆盖第一次的。若要解决该问题,可以采用’a’模式打开文件。

  2. f.read(size)方法读取内容
    含义:f代表以可读方式打开的文件对象;size为可选参数,指定读取字节数量的内容,不填默认读取全部内容。

    file_path = r'e:\test.txt'               #指定需要建立或打开的文本名称和路径
    new_file = open(file_path,'r')           #以只读模式打开test.text文件
    c = new_file.read()                      #用文件对象read()方法读取内容
    print(c)                                 #打印读取内容
    new_file.close()                         #关闭打开的文件
    

    执行结果如下:

3 复杂的读写文件

  1. 一次写入多行

    t = ['one', 'two', 'three', 'four', 'five', 'six']
    f = open(r'e:\test2.txt', 'a')         #追加写入模式打开文件
    for i in t:                            #循环,迭代获取列表元素f.write(i+'\n')                    #把每个元素循环写入文件中,末尾换行加\n
    f.close()                              #关闭文件
    print('连续写入完成')                  #提示写入结束
    

    执行结果如下:

    在E盘根目录下打开test2.txt文件,内容如下:

  2. 一次读一行
    f.readline(s),f代表以可读模式打开的文件;s为可选参数,代表读取指定大小的字节,若没有设置,则以行为单位返回字符串。

    f = open(r'e:\test2.txt','r')
    r = 1
    while r:r=f.readline()         #一次读取一行print(r)
    

    执行结果如下:

  3. 以列表格式读取多行
    f.readlines(),f代表以可读模式打开的文件;

    f = open(r'e:\test2.txt','r')
    L_r = f.readlines()            #以列表格式读取多行
    print(L_r)
    

    执行结果如下:

  4. 连续读特定字节数量的内容

    f = open(r'e:\test2.txt','r')   #以只读方式打开test2.txt文件
    print(f.readline(2))            #第一次,读取文件头2个字节
    print(f.readline())             #继续读取同一行,剩余字节
    print(f.read(4))                #继续读取4个字节
    

    执行结果如下:

    注意:在连续读取同一个文件的情况下,后一个读取动作(readline()或read())都在前一个读完的字节位置后继续读取,而不是从文件头读。

  5. 在指定位置读内容
    f.tell():f代表已打开的文件,tell()方法返回当前文件可以读写的位置(字节数)

    f = open(r'e:\test2.txt', 'r')
    print(f.readline(3))    #读取3个字节
    print(f.tell())         #获取当前位置
    

    执行结果如下:

    f.seek(offset[,whence]):f代表已打开的文件,seek()方法重新指定将要读写的当前位置。offset参数设置位置的偏移量的字节数。whence参数可选,确定文件起计位置,默认值为0,代表从文件的开始位置+偏移量来确认当前位置。

    f = open(r'e:\test2.txt', 'r')
    print(f.seek(5))        #指定当前位置为5
    print(f.read(3))        #从5开始读取3个字节
    

    执行结果如下:

  6. 在指定位置写内容

    f = open(r'e:\test2.txt', 'w')
    f.seek(5)
    f.write('------')     #试图往文件内容中间位置插入新的内容
    f.close()
    

    执行结果如下:

    注意:文件中其他内容都丢失,只能在第17个字节处发现新写入的内容。除了可以采用尾部追加内容外,要在文件内容中间进行增加或修改,可以先通过列表读取所有内容,然后再修改列表内容,最后再写入文件。

4 文件异常处理

fpath = r'e:\test3.txt'                      #E盘下没有test3.txt文件
flag = False
try:                                         #异常捕捉开始f = open(fpath, 'r')                     #试图打开不存在的test3.txt文件print(f.read())flag = True
except:                                      #捕捉异常print('打开%s文件报错,请检查!'%(fpath))    #出错提示
finally:                                     #无论出错与否,都强制执行以下代码if flag:                                 #如果文件正常打开f.close()                            #关闭文件print('关闭文件')else:                                    #文件打开异常print('关闭程序')                     #退出程序提示

执行结果如下:

5 文件与路径

5.1 与路径相关的操作

在Python自带的os模块里,通过path对象的各种方法可以实现对路径的各种操作。

  1. 获取程序运行的当前路径
    os.path.abspath(p):abspath()以字符串形式为返回平台归一化(考虑了跨操作系统)的绝对路径;p为指定的路径名称(字符型)。若p指定为’.‘,则代表当前路径(等价于os.path.curdir)。

    import os                               #导入os模块
    print(os.path.abspath('.'))               #返回当前绝对路径
    print(os.path.abspath(os.path.curdir))
    

    执行结果如下:

  2. 判断指定路径下是否存在文件
    os.path.exists(p):p为指定的路径名称(字符型);若存在,返回True,不存在返回False。也可以通过os.path.isfile(p)直接判断。

    import os                                  #导入os模块
    print(os.path.exists(r'e:\test2.txt'))     #用exists()方法判断test2.txt文件是否存在
    print(os.path.isfile(r'e:\test3.txt'))     #用isfile()方法判断test3.txt文件是否存在
    

    执行结果如下:

  3. 判断指定路径是否存在
    os.path.isdir(p):p为字符串格式的路径;存在返回True,不存在返回False。也可以用os.path.exists(p)直接判断路径。

    import os                                 #导入os模块
    print(os.path.isdir(r'e:\\'))             #isdir()方法判断e:\\路径是否存在
    print(os.path.exists(r'f:\\'))            #用exists()方法判断f:\\路径是否存在
    

    执行结果如下:

  4. 建立文件夹(子路径)
    os.makedirs(p):p为字符串形式的需要建立的路径;建立不成功,抛出OSError出错信息,建立成功,则在对应的路径下建立新的文件夹。

    import os                       #导入os模块
    os.makedirs(r'e:\folder')       #在E盘建立folder文件夹
    

    如果文件夹已存在,则会报如下错误:

5.2 动态指定路径下建立新文件

import os                                           #导入os模块
import sys                                          #导入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 + '\\test3.txt'                           #准备在新建立的子路径下存放文件test3.txt
flag = False
try:f = open(f_n, 'w')                              #第一次执行,在新路径下新建新文件test3.txt并打开print(f.write('OK'))                            #写入OK,并返回2字节的数字flag = Trueprint('文件%s写入正常!'%(f_n))
except:print('打开%s文件出错,请检查!'%(f_n))
finally:if flag:f.close()print('关闭文件!')else:print('关闭程序!')

执行结果如下:

【Python】文本文件处理相关推荐

  1. python文本文件csv_我的第一个Python项目:如何将杂乱无章的文本文件转换为纯净的CSV文件

    python文本文件csv So I decided to learn Python. Turns out this computer programming language isn't so ha ...

  2. Python文本文件操作

    Python文本文件操作 单个文本文件读取 1.读取文本文件的旧型语法 示例: 读取名为file_to_read.txt的文本文件内容. 文本文件内容: I love Rock n Roll. inp ...

  3. python创建txt文件并写入 编码-Python文本文件读写操作时的字符编码问题

    说明1:文本文件的字符编码问题只存在t模式中,如:open('a.txt', mode='rt') 编码(encode): 我们输入的任何字符想要以文件(如.txt)的形式保存在计算机的硬盘上, 必须 ...

  4. python 文本文件处理_53 Python - txt普通文件处理

    今天讲的内容是关于数据文件的读写,我们都知道如果是普通的文本文件就比较简单,我们可以使用自带的open 方法打开我们的文件,可以使用read 和write进行读写 回顾,我们把不同文件的操作放到不同文 ...

  5. Python文本文件的输入输出

    Python具有基本的文本文件读写功能.Python的标准库提供有更丰富的读写功能. 文本文件的读写主要通过open()所构建的文件对象来实现. 创建文件对象 我们打开一个文件,并使用一个对象来表示该 ...

  6. python文本文件读取失败_Python 读取文本文件编码错误解决方案(未知文本文件编码情况下解决方案)...

    很多情况下我们是这样读取文本文件的: with open(r'F:\.Python Project\spidertest1\test\pdd凉席.txt', 'r') as f: text = f.r ...

  7. python 文本文件的编码格式:ASCII编码和UNICODE编码

    欢迎关注博主 python老鸟 或 前往 『Python自学网』, 从基础入门免费课程开始,逐步深入学习python全栈体系课程,适合新手入门到精通全栈开发. 免费专栏传送门:<Python基础 ...

  8. python程序基础知识(五)python文本文件操作

    目录 1.概述 2.写文本文件 3.读文本文件 3.1 读字符函数read 3.2 读取一行的函数readline和读取所有行的readlines 4.文件编码 5.文件指针 6.二进制文件 1.概述 ...

  9. Python——文本文件score.txt,该文件中存储了某个学期某班级中每个人所有课程的成绩。

    ''' 有如下内容形式的文本文件score.txt,该文件中存储了某个学期某班级中每个人所有课程的成绩.形式为:李彦宏 男 英语 80李彦宏 男 电子技术基础 75李彦宏 男 Python程序设计 8 ...

  10. python文本文件不能用二进制文件方式读入_如何使用python函数以二进制形式读取文件?...

    虽然读取文件的方式各种各样,但是通过二进制,还是头一次,实现过过程并不难,我们需要将文件先做好封存,以函数的形式,保存下来,然后直接导入进行使用,这样就可以读取文件,因为直接二进制读取是不现实的,只能 ...

最新文章

  1. python目前的应用领域_专栏G|轻松学Python01:Python环境搭建与运行
  2. sql server分布式事务解决方案[新事务不能登记到指定的事务处理器中错误]
  3. GD32通用定时器、高级定时器PWM输出例程
  4. Python爬虫入门(4):Urllib库的高级用法
  5. Algorithm:C++语言实现之概率算法相关问题(计算机中的概率事件、C语言中的随机事件、产生二维随机数、圆内均匀取点)
  6. WebService怎样在IIS上部署
  7. 【编程5】斐波那契数列 + 递归+LeetCode50
  8. 小白教你用Java生成验证码
  9. mongodb,spring data api常用总结
  10. Docker是什么,有什么用?一看就明白
  11. 谷歌收购DNNresearch能获得什么?
  12. animate.css 官方,animateCSS
  13. Apple Pay发展与安全
  14. 仿XP画图板开发-解决布局问题
  15. P8700和T9600对比测试
  16. 形式逻辑(07)性质判断 和 推理
  17. java程序假死_分析一个常见的java多线程通信问题(假死现象)
  18. 个人计算机更新主要基于,计算机基础知练识习题.doc
  19. 简单解读拼多多t.gif、tne.gif接口
  20. 洛谷P1462 通往奥格瑞玛的道路

热门文章

  1. 揭开腾讯云原生同城双活的秘密
  2. 小蛋白泛素(Ub)共价附着降解靶向嵌合体-Ibrutinib/HS-27/Ibrutinib-biotin
  3. 为什么股票投资是世界上最难成功的行业
  4. SVG绘制圆环进度条
  5. 量化策略——准备3 数据、Backtrader回测框架与quantstats评价指标
  6. 浅谈Arrays.asList()方法
  7. C语言常见的错误及解决办法,避坑笔记
  8. C++题解:【NOIP2006PJ】Jam的计数法(count)
  9. Cocoapods的安装 简单教程(有待完善)
  10. acw - 4262.空调