广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python面向对象之文件操作
  • 379
分享到

Python面向对象之文件操作

面向对象操作文件 2023-01-31 00:01:21 379人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

文件的概念 文件的概念和作用 计算机的文件,就是存储在某种长期存储设备上的一段数据;长期存储设备包括:U盘,硬盘,移动硬盘,光盘,等; 文件的作用:将数据长期保存,在需要的时候使用; 文件的存储方式 在计算机中,文件是以二进制的形式保

文件的概念

文件的概念和作用

  1. 计算机的文件,就是存储在某种长期存储设备上的一段数据;长期存储设备包括:U盘,硬盘,移动硬盘,光盘,等;
  2. 文件的作用:将数据长期保存,在需要的时候使用;

文件的存储方式

在计算机中,文件是以二进制的形式保存在磁盘上的;

文本文件和二进制文件

文本文件

  • 可以用文本编辑软件查看;
  • 本质上还是二进制文件;
    例如:python源文件。

二进制文件

  • 保存的文件不是直接给人阅读的,而是提供给其他软件使用的;
  • 二进制文件不能会用文本编辑软件查看;
    例如:图片文件,音频文件等

文件的基本操作

文件操作步骤

在计算机中操作文件的步骤时分固定,一共包含三个步骤:

  1. 打开文件;
  2. 读,写文件;读:将文本内容读入内存;写:将内存内容写入文本;
  3. 关闭文件;

操作文件的方法/函数

Python中操作文件需要记住一个函数和两个方法

序号 函数/方法 说明
1 open 打开文件,返回文件操作对象;
2 read 将文件内容读取到内存;
3 write 将指定内容写入到文件;
4 close 关闭文件;
  • open函数负责打开文件,返回文件操作对象;
  • 其余三个方法需要通过文件对象调用;

read方法-读取文件

open函数的第一个参数是要打开的文件名(文件名区分大小写);

如果文件存在,返回文件操作对象
如果文件不存在,会抛出异常

read方法可以一次性读入并返回文件的所有内容;
close方法负责关闭文件;
如果忘记关闭文件,会造成系统资源消耗,而且会影响到后续对文件的访问;
注意:read方法执行后,会把文件指针移动到文件的末尾
提示:在开发中,通常会先编写打开和关闭的代码,再编写中间针对文件的读写操作;

读取文件示例

# 打开文件
file = open("hello.txt")
# 读取文件
text = file.read()
print(text)
# 关闭文件
file.close()

# welcome to hello.txt
# this is a test file.

文件指针

  • 文件指针标识 从哪个位置开始读取数据;
  • 第一次打开文件时,通常文件指针会指向文件的开始位置;
  • 当执行了read方法后,文件指针会移动到读取内容的末尾;默认情况下会移动到文件末尾;

所以,如果在同一次打开文件中,执行了一次read方法,读取所有内容,再次调用read方法的话,就不能够再获得内容了;这是因为第一次读取之后,文件指针移动到了文件末尾,再次调用不会读取到任何的内容;

文件指针示例

# 打开文件
file = open("hello.txt")
# 读取文件
text = file.read()
print(text)
print(len(text))

print("-"*50)
# 再次读取文件
text1 = file.read()
print(text1)
print(len(text1))

# 关闭文件
file.close()

# welcome to hello.txt
# this is a test file.
# 42
# --------------------------------------------------
# 0

open函数-打开文件的方式

open函数默认以只读方式打开文件,并且返回文件对象

open函数语法如下:

f = open("文件名", "访问方式")

open打开文件情况罗列

访问方式 说明
r 只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。如果文件不存在,抛出异常
w 只写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件
a 追加方式打开文件。如果文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入。
r+ 读写方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,抛出异常。
w+ 读写方式打开文件。如果文件村子会被覆盖。如果文件不存在,创建新文件。
a+ 读写方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入。

打开方式其实还有"rb","wb","wb+",...等,这是针对二进制文件的方式。

提示

  • 频繁的移动文件指针,会影响文件的读写效率,开发中更多的时候会以只读,只写的方式来操作文件。

追写文件示例

file = open("hello.txt", "a")
file.write("hello world")
file.close()

按行读取文件内容

  • read方法默认会把文件的所有内容一次性读取到内存;
  • 如果文件太大,对内存的占用会非常严重。

readline方法

  • readline方法可以一次读取一行内容;
  • 方法执行后,会把文件指针移动到下一行,准备再次读取;

读取指定行数数据

file = open("hello.txt")

line1 = file.readline()
print(line1)
line2 = file.readline()
print(line2)

file.close()

# 1.welcome to hello.txt

# 2.this is a test file.

分行读取整个文件:

hello.txt内容

1.welcome to hello.txt
2.this is a test file.

3.hello world

readline_test.py内容

file = open("hello.txt")

while 1:

    line = file.readline()
    print(line, end="")

    if not line:
        break
file.close()

# 运行结果
# 1.welcome to hello.txt
# 2.this is a test file.

# 3.hello world

小文件复制示例

# 打开文件
read_file = open("hello.txt")
write_file = open("hello_small.txt", "w")

# 读写文件
text = read_file.read()
write_file.write(text)

# 关闭文件
read_file.close()
write_file.close()

大文件复制示例

# 打开文件
read_file = open("hello.txt")
write_file = open("hello_big.txt", "w")

# 读写文件
while 1:
    # 读取一行内容
    text = read_file.readline()
    # 判断是否有内容
    if not text:
        break
    # 写入复制文件
    write_file.write(text)

# 关闭文件
read_file.close()
write_file.close()

文件/目录的常用管理操作

  • 在终端/文件浏览器中,可以执行常规的文件/目录管理操作,例如:创建,重命名,删除,改变路径,查看目录内容等等。
  • 在Python中,如果希望通过程序实现上述功能,需要导入os模块。

文件操作方法罗列

序号 方法名 说明 示例
01 rename 重命名文件 os.rename(源文件名,目标文件名)
02 remove 删除文件 os.remove(文件名)

目录操作方法罗列

序号 方法名 说明 示例
01 listdir 目录列表 os.listdir(目录名)
02 mkdir 创建目录 os.mkdir(目录名)
03 rmdir 删除目录 os.rmdir(目录名)
04 getcwd 获取当前目录 os.getcwd()
05 chdir 修改工作目录 os.chdir(目标目录)
06 path.isdir 判断是否是文件 os.path.isdir(文件路径)

提示:文件/目录操作都支持绝对路径/相对路径

文本文件的编码格式

  • 文本文件存储的内容是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等;
  • python2.x默认使用ASCII编码;
  • python3.x默认使用UTF-8编码;

ASCII编码和UNICODE编码

ASCII编码

  • 计算机中只有256个ASCII字符;
  • 一个ASCII在内存中占用1个字节的空间;而8个0/1的排列组合方式一共有256中,也就是2**8

UTF-8编码

  • 计算机中使用的1-6个字节来表示一个utf-8字节,涵盖了地球上几乎所有地区的文字;
  • 大多数汉字会使用3个字节来表示;
  • utf-8是UNICODE编码的一种编码格式。

python2.x中使用中文

在python2.x文件的第一行增加以下代码,解释器会以utf-8编码来处理python文件;

# *-* coding:utf8 *-*

上面这种是官方推荐使用的,也可以使用下面这种方式:

# coding=utf8

unicode字符串前加u

  • 在python2.x中,即使指定了文件使用utf-8的编码格式,但是在遍历字符串时,仍然会以字节为单位遍历字符串;
  • 要能够正确的遍历字符串,在定义字符串时,需要在字符串的引号前,增加一个小写字母u,告诉解释器这是一个unicode字符串(使用utf-8编码格式的字符串)。

例如下面的代码:

test_str = "hello世界"
print(test_str)

在2和3下都会正确执行,但是当我们遍历输出字符串时,就会出现不一样的情况;

test_str = "hello世界"
print(test_str)
for i in test_str:
    print(i)

在python3中可以正常执行以上代码;
但是在python2中,可以输出完整字符,遍历时输出的结果中"世界"显示的是六行特殊字符;
解决为 定义字符串时,需要在字符串的引号前,增加一个小写字母u。

示例如下:

test_str = u"hello世界"
print(test_str)
for i in test_str:
    print(i)

--结束END--

本文标题: Python面向对象之文件操作

本文链接: https://www.lsjlt.com/news/182257.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python面向对象之文件操作
    文件的概念 文件的概念和作用 计算机的文件,就是存储在某种长期存储设备上的一段数据;长期存储设备包括:U盘,硬盘,移动硬盘,光盘,等; 文件的作用:将数据长期保存,在需要的时候使用; 文件的存储方式 在计算机中,文件是以二进制的形式保...
    99+
    2023-01-31
    面向对象 操作 文件
  • Python面向对象之面向对象基本概念
    面向过程和面向对象概念 过程和函数:过程类似于函数,只能执行,但是没有返回结果;函数不仅能执行,还能返回结果。 面向过程和面向对象 基本概念 面向过程-怎么做 把完成某一个需求的所有步骤从头到尾逐步实现; 根据开发需求,将某些功能独立的...
    99+
    2023-01-31
    面向对象 基本概念 Python
  • Python面向对象之类和对象
    目录类定义类定义类和属性类中方法对象方法(普通方法)类方法静态方法魔术方法对象创建对象对象属性总结 类 定义类 所有类名首字母要求大写,多个单词时遵循驼峰命名法 所...
    99+
    2022-11-12
  • python之路day06 面向对象
    面向对象(你就是上帝): 世间万物,皆可分类 世界万物,皆为对象 https://www.cnblogs.com/alex3714/articles/5188179.html 面向对象编程 OOP编程是利用“类”和“对象”来创建各种模型来...
    99+
    2023-01-30
    之路 面向对象 python
  • python之初始面向对象
    1. 初识面向对象   面向过程:     一切以事务的发展流程为中心.   面向对象:     一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 2. 类. 对象 ...
    99+
    2023-01-30
    面向对象 python
  • python 面向对象之变量
    类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。实例变量:定义在方法中的变量,只作用于当前实例的类。类变量的用途?大家公共的属性,节省开销看下面一段代码class Role...
    99+
    2023-01-30
    变量 面向对象 python
  • python 面向对象之多态
    多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。那么,多态的...
    99+
    2023-01-30
    面向对象 多态 python
  • python之成员(面向对象)
    1. 成员   在类中你能写的所有内容都是类的成员    class Person: def __init__(self, name, gender): self.name = name # 成员...
    99+
    2023-01-30
    面向对象 成员 python
  • python面向对象之反射
    一、静态方法(staticmethod)和类方法(classmethod)类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属×××互(也就是可以使用类属性)静态方法:让类里的方法直接被类调用,就像正常调用函数一样类方法和静态方...
    99+
    2023-01-31
    反射 面向对象 python
  • python 面向对象之继承
    文章目录 前言继承的概念单继承多继承子类重写父类的同名方法和属性子类调用父类同名的方法和属性多层继承私有权限 前言 前面我们已经学习了 python 面向对象的类和对象,那么今天我将为大...
    99+
    2023-09-01
    python 开发语言
  • Python面向对象之入门类和对象
    目录什么是面向对象编程?定义类,从具体代码来感受吧!多个类和对象的观察补充一下类的属性(数据部分)总结什么是面向对象编程? 我们是不是听过面向过程,拿来放在一起对比就比较好理解了。 ...
    99+
    2022-11-12
  • 【python】面向对象编程之@prop
      @property装饰器作用:把一个方法变成属性调用 使用@property可以实现将类方法转换为只读属性,同时可以自定义setter、getter、deleter方法   @property&@.setter class ...
    99+
    2023-01-31
    面向对象 python prop
  • python面向对象之类成员
    一、概述       上篇《python面向对象OOP》介绍了python面向对象的基础初级入门部分,提到了类的定义,使用,类的三大特性;经典类,新式类在查找时的区别等,有了前面的基础,本文接着描述面向对象中类成员;先整体描述下,类中的成员...
    99+
    2023-01-31
    面向对象 成员 python
  • python 面向对象之类方法
    类方法通过@classmethod装饰器实现,类方法和普通方法的区别是, 类方法只能访问类变量,不能访问实例变量举个例子class Dog(object):     def __i...
    99+
    2023-01-30
    面向对象 方法 python
  • python之文件对象
    防伪码忘情公子著文件对象是用来访问文件系统接口所对应的数据的文件系统是OS用于明确磁盘或分区上的文件的方法和数据结构—即在磁盘上组织文件的方法计算机文件或称文件、电脑档案、档案是存储在某种长期储存设备或临时存储设备中的一段数据流并且归属于计...
    99+
    2023-01-31
    对象 文件 python
  • Python全栈之面向对象基础
    目录1. 面向对象oop了解2. 对象的相关操作小提示:3. 类的相关操作4. 类对象的删除操作小提示:5. 小练习小提示:答案:总结1. 面向对象oop了解 # ### oop...
    99+
    2022-11-12
  • Python入门之面向对象和类
    目录一、两大编程思想二、类与对象三、定义Python中的类四、对象创建五、类属性、类方法、静态方法六、动态绑定属性和方法七、面向对象的三大特征八、方法重写总结一、两大编程思想 二、...
    99+
    2022-11-12
  • python 面向对象之class和封装
    # 封装 # Python并没有真正的私有化支持,但可用下划线得到伪私有 访问私有变量:实例._类名__变量名 访问私有方法:实例._类名__方法名() class Wife02(...
    99+
    2022-11-12
  • python数据结构之面向对象
    目录1. 面向对象编程2. 构建类3. 继承3.1 继承案例前文学习: python数据结构:数据类型.python数据结构输入输出及控制和异常. 今天我们来学习面向对象编程,面向对...
    99+
    2022-11-12
  • Python面向对象之模块详解
    目录1.1 导入模块1.1.1 import 模块名1.1.2 from 模块名 import 功能名1.1.3 from …import*1.1.4 as 定义别名1.2 制作模块...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作