[Python][文件]详细讲解


1.文件操作

1.打开文件

  • 使用内建函数open()打开一个文件
    f = open('D:/test.txt', 'r')
    
  • 参数
    • 第一个参数是一个字符串,表示要打开的文件路径
    • 第二个参数是一个字符串,表示打开方式
      • r表示按照读方式打开
      • w表示按照写方式打开
      • a表示追加写方式打开
  • 返回值
    • 如果成功,返回一个文件对象,后续的读写文件操作都是围绕这个文件对象展开
    • 如果失败(比如路径指定的文件不存在),就会抛出异常

2.关闭文件

  • 使用close()关闭已经打开的文件
    f.close()
    
  • 使用完毕的文件要记得及时关闭
    • 一个程序能同时打开的文件个数,是存在上限的
    • 当一个程序打开的文件个数超过上限,就会抛出异常
      flist = []
      count = 0
      while True:
          f = open('d:/test.txt', 'r')
          flist.append(f)
          count += 1
          print(f'count = {count}')
      
  • 上述代码中,使用一个列表来保存了所有的文件对象,如果不进行保存,那么 Python 内置的垃圾回收机制(GC),会在文件对象销毁的时候自动关闭文件
    • 但是由于垃圾回收操作不一定及时,所以写代码仍然要考虑手动关闭,尽量避免依赖自动关闭

3.写文件

  • 写文件,要使用写方式打开,open()第二个参数设为'w'
  • 使用write()写入文件
    f = open('D:/test.txt', 'w')
    f.write('SnowK')
    f.close()
    
  • 如果是使用'r'方式打开文件,则写入时会抛出异常
  • 注意
    • 使用'w'一旦打开文件成功,就会清空文件原有的数据
    • 使用'a'实现"追加写",此时原有内容不变,写入的内容会存在于之前文件内容的末尾

4.读文件

  • 读文件内容需要使用'r'的方式打开文件
  • 使用read()完成读操作,参数表示"读取几个字符"
    f = open('D:/test.txt', 'r')
    result = f.read(2)
    print(result)
    f.close()
    
  • 如果文件是多行文本,可以使用for循环一次读取一行
    • 先构造一个多行文件
      f = open('D:/test.txt', 'r')
      for line in f:
          print(f'line = {line}')
      f.close()
      
    • 注意
      • 由于文件里每一行末尾都自带换行符,print()打印一行的时候又会默认加上一个换行符, 因此打印结果看起来之间存在空行
      • 使用print(f'line = {line}', end='')手动把print()自带的换行符去掉
        • end参数表示每次打印之后要在末尾加个啥
        • 默认是\n
        • 修改成''表示啥也不加
  • 使用readlines()直接把文件整个内容读取出来,返回一个列表,每个元素即为一行
    f = open('D:/test.txt', 'r')
    lines = f.readlines()
    print(lines)
    f.close()
    
  • 关于中文的处理:修改打开文件的代码,给open()加上encoding参数,显式的指定为和文本相同的字符集,问题即可解决
    f = open('D:/test.txt', 'r', encoding = 'utf8')
    

2.上下文管理器

  • 打开文件之后,是容易忘记关闭的,Python提供了上下文管理器,来帮助程序猿自动关闭文件
    • 个人感觉有点 RAII 思想的感觉,理解上参照C/C++中的智能指针
  • 使用
    • 使用with语句打开文件
    • with内部的代码块执行完毕后,就会自动调用关闭方法
      with open('D:/test.txt', 'r', encoding='utf8') as f:
          lines = f.readlines()
          print(lines)
      
  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Python 中,文件操作通常使用文件对象(file object)来进行。Python 内置了打开文件、读取文件文件等操作的函数。 打开文件可以使用 `open()` 函数,该函数的语法如下: ```python file = open(file_name [, access_mode][, buffering]) ``` 其中,`file_name` 为要打开的文件名(包括路径),`access_mode` 为打开模式(默认为只读模式),`buffering` 为缓冲区大小(默认为系统默认值)。 `access_mode` 的取值可以是以下几种: - `r`:只读模式,文件指针放在文件开头。 - `r+`:读模式,文件指针放在文件开头。 - `w`:只模式,如果文件存在则清空,如果不存在则创建。 - `w+`:读模式,如果文件存在则清空,如果不存在则创建。 - `a`:只模式,如果文件存在则在文件末尾追加,如果不存在则创建。 - `a+`:读模式,如果文件存在则在文件末尾追加,如果不存在则创建。 打开文件后,可以使用 `read()` 方法读取文件内容,也可以使用 `write()` 方法文件内容。读完毕后,需要使用 `close()` 方法关闭文件。 另外,还有一种更简单的方式来打开文件,使用 `with` 语句打开文件,这样不需要手动关闭文件,系统会自动关闭文件。`with` 语句的语法如下: ```python with open(file_name [, access_mode][, buffering]) as file: # do something with the file ``` 在 `with` 语句块中,可以对文件进行读操作。当 `with` 语句块执行完毕后,系统会自动关闭文件。 需要注意的是,每次读文件时,文件指针会移动到相应的位置。如果需要重新读文件,需要重新打开文件或者使用 `seek()` 方法将文件指针移动到相应的位置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DieSnowK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值