【Python文件的使用】

2023-11-15

文章目录

一、文件概述

1.文件类别

2.文件路径

3.文件的编码方式

二、文件操作

1.文件打开 

2.文件读写

3.文件关闭

三、操作实例


一、文件概述

1.文件类别

文件是一个存储在辅助存储器上的数据序列,可以包含任何数据内容。概念上,文件是数据的集合和抽象,类似地,函数是程序的集合和抽象。用文件形式组织和表达数据更有效也更为灵活。文件包括两种类型: 文本文件 二进制文件。
        二进制文件直接由比特0和比特1组成,没有统一字符编码,文件内部数据的组织格式与文件用途有关。 二进制文件和文本文件最主要的区别在于是否有统一的字符编码
        无论文件创建为文本文件或者二进制文件,都可以用“文本文件方式”和“二进制文件方式”打开,打开后的操作不同。
通过下面的实例,理解文本文件和二进制文件的区别。
#coding=utf-8
textFile = open("7.1.txt", "rt", encoding='utf-8')  # t表示文本文件方式
print(textFile.readline())
textFile.close()
binFile = open("7.1.txt", "rb")  # b表示二进制文件方式
print(binFile.readline())
binFile.close()

输出结果如下:

CSDN是个学习的好地方!

b'CSDN\xe6\x98\xaf\xe4\xb8\xaa\xe5\xad\xa6\xe4\xb9\xa0\xe7\x9a\x84\xe

5\xa5\xbd\xe5\x9c\xb0\xe6\x96\xb9\xef\xbc\x81'

        采用文本方式读入文件,文件经过编码形成字符串,打印出有含义 的字符;采用二进制方式打开文件,文件被解析为字节(byte)流。 由于存在编码,字符串中的一个字符由2个字节表示。

2.文件路径

文件有两个关键属性,分别是“文件名”和“文件路径”。 文件名指的是为每个文件设定的名称。 文件路径,是文件存储的位置或即将存储的位置。


3.文件的编码方式

编码就是用数字来表示符号和文字,它是符号、文字存储和显示的基础。

(1)ASCII编码方式

(2)GB2312编码方式

(3)GBK编码方式

(4)Unicode编码方式

(5)UTF-8编码方式


二、文件操作

Python对文本文件和二进制文件采用统一的操作步骤,即 “打开-操作-关闭”


1.文件打开 

 Python通过解释器内置的open()函数打开一个文件,并实现该文件与一个程序变量的关联,open() 函数常用形式是 接收两个参数:文件名(file)和打开模式(mode)。
<变量名> = open(<文件名>, <打开模式>)

 完整的语法格式为:

open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,

closefd=True, opener=None)

参数说明:

  • file: 必需,文件路径(相对或者绝对路径)。
  • mode: 可选,文件打开模式
  • buffering: 设置缓冲
  • encoding: 一般使用utf8
  • errors: 报错级别
  • newline: 区分换行符
  • closefd: 传入的file参数类型
  • opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。

 注意:

open函数其中的encoding参数的默认值是None是不能读取中文字符的,所以要给encoding参数赋值为utf-8才能读取中文字符。

文件名可以是文件的实际名字,也可以是包含完整路径的名字。
模式(mode 参数有:

模式

描述

r

以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。如果文件不存在,返回异常FileNotFoundError,默认值

w

覆盖写模式,文件不存在则创建,存在则完全覆盖

x

写模式,文件不存在则创建,存在则返回异常FileExistsError

a

打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

b

二进制文件模式。

+

与r/w/x/a一同使用,在原功能基础上增加同时读写功能

文本模式 (默认)。

rb

以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。

r+

打开一个文件用于读写。文件指针将会放在文件的开头。

rb+

以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。

wb

以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

w+

打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb+

以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

ab

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+

打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

  默认为文本模式,如果要以二进制模式打开,加上 b 。


2.文件读写

file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:

序号

方法及描述

1

file.flush()

刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。

一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。

2

file.fileno()

返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。

3

file.isatty()

如果文件连接到一个终端设备返回 True,否则返回 False。

4

file.read([size])

从文件读取指定的字节数,如果未给定或为负则读取所有。

5

file.readline([size])

读取整行,包括 "\n" 字符。

6

file.readlines([sizeint])

读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。

7

file.seek(offset[,whence])

移动文件读取指针到指定位置

8

file.tell()

返回文件当前位置。

9

file.truncate([size])

从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 windows 系统下的换行代表2个字符大小。

10

file.write(str)

将字符串写入文件,返回的是写入的字符长度。

11

file.writelines(sequence)

向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。


3.文件关闭

文件使用结束后要使用close()方法关闭,释放文件的使用授权,该方法的使用方式如下:

<变量名>.close()


三、操作实例

实例1:

文本文件逐行打印

#coding=utf-8
fname = input("请输入要打开的文件:")
fo = open(fname, "r", encoding="utf-8")
for line in fo.readlines():
    print(line)
fo.close()

 运行结果

如果程序需要逐行处理文件内容,建议采用上述代码格式

实例2:

对文件进行写入

#coding=utf-8
fname = input("请输入要打开的文件:")
fo = open(fname, "w+")
ls = ["唐诗", "宋词", "元曲"]
fo.writelines(ls)
for line in fo:
    print(line)
fo.close()

 运行结果

  实例3:

自己创建一个文本文件src.txt,存储的是若干名学生的成绩,每个成绩占一行,求平均成绩并输出

#coding=utf-8
f = open("src.txt", "r")
ls = f.readlines()
ls2 = []
for i in ls:
    x = eval(i.strip())
    ls2.append(x)
print(sum(ls2)/len(ls2))
f.close()

实例4:

自己创建一个电话本文本文件: dhb.txt,存储的是若干人的电话,格式如图。输入姓名查找电话号码,存在则输出,否则输出“查无此人”。

#coding=utf-8
f = open("dhb.txt", "r")
ls = f.readlines()
d = {}
for i in ls:
    k = i.strip().split()[0]
    v = i.strip().split()[1]
    d[k] = v
xm = input()
print(d.get(xm, "查无此人"))
f.close()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Python文件的使用】 的相关文章

随机推荐

  • Java面试----2018最全Redis面试题整理

    1 什么是Redis 答 Redis全称为 Remote Dictionary Server 远程数据服务 是一个基于内存的高性能key value数据库 2 Redis的数据类型 答 Redis支持五种数据类型 string 字符串 ha
  • python 访问网络失败 huggingface ConnectionError

    使用Hugginface下载数据集 dataset load dataset path seamew ChnSentiCorp 结果遇到网络问题 huggingface ConnectionError Couldn t reach 原因是无
  • element中同一个一面使用两个table,使用v-if判断显示,数据混乱

    错误 在一个页面中使用两个table 绑定不同的数据 并且在table中row中使用
  • 梯度下降法求解线性回归--Numpy实现

    梯度下降法求解一元线性回归 依然是这个房价预测的任务 这是一个一元线性回归问题 这次我们采用梯度下降法来求解它可以分为5步 第1步加载样本数据x y 第2步设置超参数 在这个例子中 超参数包括学习率和迭代次数 第3步设置模型参数的初值 w
  • 巧用搜索摆脱新手程序员标签

    文章目录 巧用搜索摆脱新手程序员标签 在哪里搜 搜索什么 搜教程 搜IDE 搜特性 搜集成 搜比较 搜定义 搜原因 搜架构 搜错误 扩展阅读 巧用搜索摆脱新手程序员标签 在哪里搜 国外网站 Google 搜索引擎 Bing 搜索引擎 Git
  • Golang初入编程-踩坑笔记(1)

    一定要自己动手写 不然使用的时候可能连等号的位置都搞不清楚 该语言没有面向对象的概念 什么函数传什么参数返回什么值自己要多练习 i 属于独立语句 不能和其他语句写到一起 自己占一行 以下东东需要初始化 开辟空间 包括切片 指针 map 数组
  • java写一个android程序_【Android开发笔记】3.编写第一个Android程序

    前言 上一节我们通过一个Demo熟悉了Eclipse的基本使用 如何在模拟器和手机中运行以及如何打包成APK 但没具体编写代码 相信很多同学已经按耐不住了吧 这一节我们会动手编写代码来熟悉Android SDK的情况和JAVA的一些特性 声
  • OpenAPI 3.0 规范-食用指南

    优质资源分享 学习路线指引 点击解锁 知识定位 人群定位 Python实战微信订餐小程序 进阶级 本课程是python flask 微信小程序的完美结合 从项目搭建到腾讯云部署上线 打造一个全栈订餐系统 Python量化交易实战 入门级 手
  • 在Kong网关中使用OAuth2认证

    文章目录 在Kong网关中使用OAuth2认证 前言 在Kong上开启HTTPS OAuth2认证 添加OAuth2插件 创建Consumer的OAuth2 credential 测试OAuth2 Authorization Flow 获取
  • 【无功优化】基于教与学算法实现IEEE_33节点无功优化附matlab代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab仿真内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器 电力系统 信号
  • Linux一行命令筛选并停止某个服务的进程

    Linux下 筛选某个服务 如nginx 的进程命令 ps ef grep nginx 如果想停掉相应的进程则可以使用kill命令 如果想一行命令筛选出进程号 并kill掉 则 ps ef grep nginx grep v grep aw
  • 解决VC6在Win7或Win10下调试无法结束进程的Bug

    自己的系统是Win7 装上了VC6 调试一段小代码之后再次编译的时候就提示如下的错误 LINK fatal error LNK1168 cannot open Debug 1 exe for writing 意思就是编译要生成同名的 1 e
  • vue中使用Swiper

    一 安装依赖 npm i swiper 二 项目中使用 import swiper swiperSlide from vue awesome swiper import swiper css swiper css div class lb
  • JavaScript基础Day03:数组和函数

    JavaScript基础Day03 文章目录 JavaScript基础Day03 一 关键字break和continue 二 数组 1 数组的定义 2 数组的概念 3 创建数组 4 遍历数组 5 重点 冒泡排序 三 函数 1 参数 2 返回
  • C++与 python 变量生存周期比较

    1 C 中变量生存周期 参考 https blog csdn net darkxiaoming article details 70232620 在C 中变量有以下两种生存周期 变量由编译程序在编译时给其分配存储空间 称为静态存储分配 并在
  • 错误 D8016 “/O2”和“/RTC1”命令行选项不兼容

    错误方式 Debug模式下 优化 最大优化 基本运行时检查 两者RTC1 正确 最大优化 默认值 优化 最大优化 O2 基本运行时检查 设置 默认值
  • LInux下几种定时器的比较和使用

    在数据通信过程中 会遇到对数据发送时间的格式要求 所以要在应用中根据实际要求选择不同的定时器 就要考虑到几种应用定时器的特点 定时器文章参考 一般而言有 1 sleep usleep和nanosleep sleep 和nanosleep 都
  • C语言:利用函数递归实现计算n!。

    C语言 利用函数递归实现计算n include
  • 简单javascript的使用

    1 javascript的简介 是基于对象和事件驱动的语言 应用于客户端 基于对象 提供了好多对象 可以直接拿过来使用 事件驱动 html做网站静态效果 javascript动态效果 客户端 专门指浏览器 js的特点 1 交互性 信息的动态
  • 【Python文件的使用】

    文章目录 一 文件概述 1 文件类别 2 文件路径 3 文件的编码方式 二 文件操作 1 文件打开 2 文件读写 3 文件关闭 三 操作实例 一 文件概述 1 文件类别 文件是一个存储在辅助存储器上的数据序列 可以包含任何数据内容 概念上