[Python][文件]详细讲解

目录

  • 1.文件操作
    • 1.打开文件
    • 2.关闭文件
    • 3.写文件
    • 4.读文件
  • 2.上下文管理器


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 += 1print(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)
      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/49828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MYSQL 第三次作业

1、第三次作业 01、SELECT * FROM student; SELECT * FROM score; 02、SELECT * FROM student LIMIT 1, 3; 03、SELECT * FROM student WHERE department IN (计算机系, 英语系); 04、SELECT * FROM student WHERE birth_year > 1998; 05、SELECT department, COUNT(*) as c…

react的State生命周期

React的State和生命周期是React框架中非常重要的概念,它们共同协作以实现组件的动态更新和高效渲染。以下是对React的State和生命周期的详细解析: React的State 定义与作用: 状态(State)是React组件内部的数据源&am…

python_从sqlite导出数据至Excel

cursor.fetchall()的方式 import sqlite3 from openpyxl import Workbook# 数据库文件名 db_file D:\\desktop\\ni.db# XLSX 文件名 xlsx_file D:\\desktop\\output2.xlsx# 连接到数据库 conn sqlite3.connect(db_file) cursor conn.cursor()# 执行查询 cursor.execute(&q…

CSP-J模拟赛day1——解析+答案

题目传送门 yjq的吉祥数 题解 送分题&#xff0c;暴力枚举即可 Code #include<bits/stdc.h> using namespace std;int l,r; int num1,tmp0,q[10000],a[10000]; int k (int x){for (int j1;j<tmp;j){if (xq[j])return 0;}return 1; } int main(){while (num<100…

Linux Vim全能攻略:实战代码,轻松掌握文本编辑神器

1. Vim简介与安装 1.1 Vim的历史与发展 Vim&#xff08;Vi IMproved&#xff09;是一款高度可配置的文本编辑器&#xff0c;它起源于1976年由Bill Joy开发的Vi编辑器。Vi是Unix系统上最古老的文本编辑器之一&#xff0c;因其强大的功能和高效的编辑方式而广受欢迎。随着时间的…

Photos框架 - 自定义媒体选择器(UI预览)

引言 在前面的博客中我们已经介绍了使用媒体资源数据的获取&#xff0c;以及自定义的媒体资源选择列表页。在一个功能完整的媒体选择器中&#xff0c;预览自然是必不可少的&#xff0c;本篇博客我们就来实现一个资源的预览功能&#xff0c;并且实现列表和预览的数据联动效果。…

GLSL教程 第9章:计算着色器

目录 9.1 计算着色器的基本概念 计算着色器的主要特点&#xff1a; 9.2 计算着色器的基础知识 1. 创建计算着色器 计算着色器代码&#xff1a; 2. 编译和链接计算着色器 示例代码&#xff1a; 3. 执行计算着色器 示例代码&#xff1a; 9.3 实现并行计算和数据并行处理…

SD-WAN 的真相以及它如何支持企业数字化转型

企业需要灵活、安全的网络解决方案&#xff0c;以支持随时随地工作模式和多云策略&#xff0c;他们正在转向软件定义广域网 (SD-WAN) 技术来实现这一目标。 其操作简单、独立于运营商的 WAN 连接和改进的安全功能可提供直接云访问&#xff0c;并为安全访问服务边缘 (SASE) 策略…

字典树、并查集适用于算法竞赛

字典树 题目&#xff1a;835. Trie字符串统计 - AcWing题库 又称单词查找树&#xff0c;Trie树&#xff0c;是一种树形结构&#xff0c;是一种哈希树的变种。典型应用是用于统计&#xff0c;排序和保存大量的字符串&#xff08;但不仅限于字符串&#xff09;&#xff0c;所以…

C++初学者指南-6.函数对象--函数对象

C初学者指南-6.函数对象–函数对象 文章目录 C初学者指南-6.函数对象--函数对象函数对象示例&#xff1a;区间查询区间内的查找区间划分(分组) 指南标准库函数对象比较算术运算 函数对象 提供至少一个成员函数重载 operator() 的对象 class Multiplier {int m_; public:// cons…

还在用if校验参数?SpringBoot使用validation优雅实现参数校验

&#x1f469;&#x1f3fd;‍&#x1f4bb;个人主页&#xff1a;阿木木AEcru (更多精彩内容可进入主页观看) &#x1f525; 系列专栏&#xff1a;《Docker容器化部署系列》 《Java每日面筋》 &#x1f4b9;每一次技术突破&#xff0c;都是对自我能力的挑战和超越。 目录 一、前…

【c++】自定义函数分享:chooseBasedOnCondition函数,根据条件选择返回值

代码展示 int chooseBasedOnCondition(bool condition1, int value1, bool condition2, int value2) {if (condition1) {return value1;} else if (condition2) {return value2;} else {return 0; // 如果都不符合&#xff0c;默认返回0} }// 重载版本2&#xff1a;只接受一个…

鸿蒙APP架构及开发入门

1.鸿蒙系统 1.1 什么是鸿蒙 鸿蒙是一款面向万物互联时代的、全新的分布式操作系统。 在传统的单设备系统能力基础上&#xff0c;鸿蒙提出了基于同一套系统能力、适配多种终端形态的分布式理念&#xff0c;能够支持手机、平板、智能穿戴、智慧屏、车机、PC、智能音箱、耳机、…

深入解析食堂采购系统源码:打造高效食材供应链APP的核心

本篇文章&#xff0c;笔者将从系统架构、关键模块、技术选型和优化策略等方面&#xff0c;深入解析食堂采购系统的源码&#xff0c;为您揭示打造高效食材供应链APP的核心要点。 一、系统架构 食堂采购系统通常采用分层架构&#xff0c;以保证系统的可维护性和扩展性。主要包括…

如何查看数据库的主机名和端口

查看数据库的主机名和端口的方法因数据库类型&#xff08;如MySQL、Oracle、SQL Server等&#xff09;和操作系统&#xff08;如Windows、Linux&#xff09;的不同而有所差异。以下是一些通用的方法和步骤&#xff1a; 一、查看数据库主机名 通过数据库管理工具&#xff1a; 对…

Android 列表或网格形式展示大量数据:RecyclerView(二):缓存复用

一、缓存复用 为什么要了解这个呢&#xff1f;当我们rv出现卡顿&#xff0c;出现闪烁的时候&#xff0c;你应该如何优化呢&#xff1f; 为什么有时候onCreateViewHolder会被调用&#xff1f;onBindVilewHolder会被调用呢&#xff1f; visiable的使用&#xff0c;会导致重新绘制…

Linux---git工具

目录 初步了解 基本原理 基本用法 安装git 拉取远端仓库 提交三板斧 1、添加到缓存区 2、提交到本地仓库 3、提交到远端 其他指令补充 多人协作管理 windows用户提交文件 Linux用户提交文件 初步了解 在Linux中&#xff0c;git是一个指令&#xff0c;可以帮助我们做…

jionlp根据词典进行行政区划补全

背景 需要对地址数据进行行政区划补全的,可以用下面的方法,当然是有条件限制的,只限于提供本省的词典和补全本身的地址数据,否则容易错乱 效果测试 lp = LocationParser() loc = 侨英街道乐海南里170号 res = lp(loc) print(res)1、安装或者更新 python安装 pip insta…

编写一个Chrome插件,网页选择文字后,右键出现菜单“search with bing”,选择菜单后用bing搜索文字

kimi ai 生成&#xff0c;测试可用&#xff0c;需要自行准备图标文件 创建一个简单的Chrome插件来实现选择文本后的搜索功能&#xff0c;你需要完成以下几个步骤&#xff1a; 创建插件的基础文件夹和文件&#xff1a; 创建一个文件夹用于存放插件的所有文件。在该文件夹中创建以…

Python爬虫技术 第18节 数据存储

Python 爬虫技术常用于从网页上抓取数据&#xff0c;并将这些数据存储起来以供进一步分析或使用。数据的存储方式多种多样&#xff0c;常见的包括文件存储和数据库存储。下面我将通过一个简单的示例来介绍如何使用 Python 爬取数据&#xff0c;并将其存储为 CSV 和 JSON 文件格…