Python基础教程:文件简单操作

一、文件的基本概念

        1.1 文件的概念

        文件是一个存储在某种持久性存储介质上的数据的结合,包含各种类型的信息,通常由数据、元数据、文件系统等几部分组成。

        文件的属性有:文件名、位置、文件类型、文件大小、创建日期、修改日期、访问权限。

       

        1.2 文件的分类

                【文本文件】:

                文本文件是由单一特定编码组成的文件,如UTF-8编码;

                由于存在编码,文本文件也被看成是存储着数据的长字符串;

                【二进制文件】:

                直接由比特0和1组成,没有统一字符编码;

                一般都存在二进制0和1的组织结构,即文件格式;

s = "Hello world!"

print("文本文件:", s)
print("二进制文件:", s.encode())

#【运行结果】:
# 文本文件: Hello world!
# 二进制文件: b'Hello world!'

        1.3 文件位置/路径

        在计算机系统中,路径是用来表示文件位置的一种方式。路径又分绝对路径和相对路径。

        【绝对路径】:带有盘符的或者带有网址的,比如:

                C:\Users\admin\Desktop\py_day3

        【相对路径】:比如:./py_gj/py_day3 或 ../py_gj/py_day3

        这里的点有特殊含义,一个点表示当前路径下,两个点表示上一级路径下。

path = "C:\\Users\\admin\\Desktop\\py_day3"
print(path)

path1 = './day3.3.py'
print(path1)

path2 = "../py_day3/day3.py"
print(path2)

#【运行结果】:
# C:\Users\admin\Desktop\py_day3
# ./day3.3.py
# ../py_day3/day3.py

二、文件的操作

        2.1 打开文件open

# 语法格式:
open(file, [mode='r', buffering=-1, encoding=None])

# 参数说明:
# - file:      必需,文件路径(相对或者绝对路径)
# - mode:      可选,文件打开模式,默认为r
# - buffering: 可选,设置缓冲
# - encoding:  可选,一般使用utf-8

# 返回值结果:一个文件对象

        其中,mode的常用模式如下:

打开方式功能文件存在时文件不存在时
r只读方式打开文件打开报错
r+以读写方式打开文件打开报错
w只写方式打开文件打开(清空之前内容)新建
w+以读写方式打开文件打开(清空之前内容)新建
a以追加方式打开文件(写)打开,保留之前内容新建
a+以读写方式打开文件打开,保留之前内容新建

        当我们需要以“字节[二进制]”形式读写文件时,只需要在mode参数的后面加 b 就可以了。

        【 rb 】:以二进制形式打开一个文件,只读;

        【 wb 】:以二进制形式打开一个文件,只写;

        【 wb+ 】:以二进制形式打开一个文件,读写;

        2.2 with关键字

        使用 with 关键字的优点:

        当我们操作文件的代码块结束后,文件会正确关闭,即便文件操作报错,也会正确关闭,无需手动调用 close()

with open('./111.txt', encoding='utf-8') as f:
    read_data = f.read()
    print(read_data)

        2.3 关闭文件close()

# 语法格式:

file.close()

        2.4 read()方法

# 语法格式:
file.read(size) # file为文件对象

# 参数说明:
# size(可选):为数字,表示从已打开文件中读取的字节计数,默认值为-1,默认情况下为读取全部。

with open('./111.txt', encoding='utf-8') as f:
    read_data = f.read(5)
    print(read_data)
    
#【运行结果】:(111.txt中有字符:hello world!)
# hello

        2.5 readline()方法 与 readlines()方法

        readline()方法:

# readline()方法:从文件中读取一行;
# 语法格式
file.readline(size)

# 参数说明:
# size 表示从文件读取的字节数。

# 注意:readline()方法会记住上一个readline()读取的位置,接着读取下一行。

        readlines()方法:

# readlines()方法:读取文件的所有行,返回值是一个列表;

# 语法格式
file.readlines()

with open('./111.txt', encoding='utf-8') as f:
    x = f.readlines()
    print(x)

#【运行结果】:
# ['Hello World!\n', 'Hello Python!\n', 'Hello Everyone!']

        2.6 write()方法

        功能:将字符串写入文件中。

# 语法格式:

file.write(str)     # file为文件对象

# 参数说明:
# str 代表要写入的字符串
s = 'Welcome to ShangHai!\nToday is : 2024/11/14 \n神清气爽'

with open('./111.txt', encoding='utf-8', mode='w') as f:
    f.write(s)


        2.7 文件指针定位

        Python中文件读写,定位文件读写的指针会随着不断地读写而移动。

        所以我们想要正确的读写,就需要控制指针的定位。

file.tell()
【功能】:返回文件的当前位置,即文件指针当前位置;


file.seek(offset[, whence])
【功能】:将文件内部光标定位到指定的位置;

【参数说明】:
    offset:开始的偏移量,也就是代表需要移动偏移的字节数;
    whence:可选,默认值为 0;
            0 代表从文件开头开始算起
            1 代表从当前位置开始算起
            2 代表从文件末尾算起

【示例】:
file.seek(p, 0)     移动到文件第p个字节处,绝对位置
file.seek(p, 1)     移动到相对于当前位置之后的p个字节
file.seek(p, 2)     移动到相对文章尾之后的p个字节
file.seek(0, 0)     移动到文件开头

s = "Hello, world!"

with open('./binary.txt', mode='wb+') as f:
    f.write(s.encode())
    # f.seek(2,0)     # 从开头 偏移2个
    # f.seek(2,1)     # 从当前 偏移2个
    # f.seek(2,2)     # 从末尾 偏移2个
    # f.seek(0,0)
    data = f.read(1)
    print(data)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值