小白从零开始勇闯人工智能:Python初级篇(6-文件操作)

Python文件操作入门指南

引言

  本章我们来学习Python的文件操作。在前面的章节中,我们学会了如何处理内存中的数据。但现实中的数据往往需要保存到文件中,或者从文件中读取。今天,我们将学习如何在Python中操作各种文件,这是数据处理和AI项目中必须掌握的技能。

一、文件的介绍

1、什么是文件

  文件作为持久化存储数据的基本单位,其作用包括保存程序运行结果、读取配置信息、存储各类数据以及记录运行日志。一个完整的文件由三个关键要素构成:保存路径——文件在存储设备中的具体位置,文件类型——定义了数据的格式和结构,文件内容——实际存储的信息数据。有了这三者,数据才能够被系统准确识别、长期保存并随时访问。

2、文件的编码方式

    因为计算机底层只能识别二进制数据(0和1),而我们日常需要使用各种文字、符号进行交流,因此需要编码作为字符与二进制之间的转换桥梁。常见的编码方式包括:UTF-8是一种通用性最强的编码,支持全球所有语言的字符,GBK是专门为简体中文设计的编码标准,主要在中国大陆使用;ASCII是早期的编码,仅支持基本的英文字符、数字和符号,无法处理其他语言字符。

二、操作文件

1、打开文件

    在Python中我们想要打开文件通常需要使用open()函数,需要了解的是这里的打开文件不是传统意义上的意思,而是与文件建立通道并获取操作文件的权限。其使用形式如下:

open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)

1)、file(必需参数):要打开的文件路径

2)、mode(可选,默认='r'):文件打开模式

常见模式有:

'r':只读模式,只获得文件的读取权限,不能修改文件。
'w':覆盖写模式,如果文件夹中没有指定路径的文件就会创建出一个文件。如果文件夹中此文件已存在,则会删除该文件内容,重新写入新内容。
'x':创建写模式,会创建一个文件并给新文件写入权限,注意不能有与将要创建文件同名的文件。
'a':追加写模式,在保留原文件的基础上在文件末尾追加写入新内容,如果文件不存在则会重新创建出一个文件并给予写入去权限。
'b':二进制模式(如图片、视频)
't':文本模式(默认)
'+':增加模式,该模式要与'r','w','x','a'中的一种结合使用表示在原有模式基础上增加读写内容。

3)、buffering:设置缓冲策略

4)、encoding(可选,默认=None):文件编码格式

5)、errors(可选,默认=None):编码错误处理方式

6)、newline(可选,默认=None):换行符处理方式

7)、closefd(可选,默认=True):是否在文件关闭时同时关闭文件描述符

8)、opener(可选,默认=None):自定义开启器,用于返回文件描述符

a = open(r'D:\\python\\PythonProject1\\first.txt', 'r', encoding='utf-8')
print(a)
# 操作文件
a.close()  # 必须关闭文件
# 读取文件内容
a = open('first.txt', 'r', encoding='utf-8')
content = a.read()
print("文件内容:", content)
a.close()
# 创建新文件或覆盖已有文件
b = open('second.txt', 'w', encoding='utf-8')
b.write("这是新写入的内容\n")
b.write("原有内容会被覆盖")
b.close()
# 创建新文件,如果文件已存在会报错
try:
    c = open('third.txt', 'x', encoding='utf-8')
    c.write("这是新创建的文件")
    c.close()
    print("文件创建成功")
except FileExistsError:
    print("文件已存在,无法创建")
# 在文件末尾追加内容
    d = open('fourth.txt', 'a', encoding='utf-8')
    d.write("这是追加的内容\n")
    d.close()
# 'w+' - 写读模式(会覆盖原内容)
f = open('sixth.txt', 'w+', encoding='utf-8')
f.write("新内容")
f.seek(0)  # 将文件指针移到开头
content = f.read()
print("写入后读取:", content)
f.close()

2、 读取文件

  当我们处于只读模式时,要想读取文件内容有四种方式:

1)、read():读取整个文件

文件.read(size=-1)

  size :从文件中读取size个字符,默认读取全部。

a = open(r'd:\python\PythonProject1\first.txt', 'r', encoding='utf-8')
print(a.read())
a.close()

2)、readline():读取一行

文件.readline(size=-1)

  size :默认读取一行内容,如果size为其他数值代表读取该行前size个字符。

a = open(r'd:\python\PythonProject1\first.txt', 'r', encoding='utf-8')
print(a.readline())
a.close()
a = open(r'd:\python\PythonProject1\first.txt', 'r', encoding='utf-8')
print(a.readline(2))
a.close()

3)、readlines():读取所有行并且以列表形式返回,每行内容为列表中的一个元素。

文件.readlines(hint=-1)

  hint:获取所在行内容的hint个字符,例如如果第一行有6个字符,hint=6就只读第一行内容。

a = open(r'd:\python\PythonProject1\first.txt', 'r', encoding='utf-8')
print(a.readlines())
a.close()
a = open(r'd:\python\PythonProject1\first.txt', 'r', encoding='utf-8')
print(a.readlines(6))
a.close()

4)、for循环遍历

  读取文件内容还可以通过for循环遍历来实现。

a = open(r'd:\python\PythonProject1\first.txt', 'r', encoding='utf-8')
for line in a:
    print(line)
a.close()

3、写入文件

  写入文件的方法有两种:

1)、write():把字符串text写入文件。

文件.write(text)

  text:为写入信息,数据类型为字符串。

a = open(r'd:\python\PythonProject1\first.txt', 'w', encoding='utf-8')
print(a.write('我在学习人工智能'))
a.close()

2)、writelines():把字符串列表写入文件,不添加换行符。

文件.writelines(lines)

  lines:字符串列表

a = open(r'd:\python\PythonProject1\first.txt', 'w', encoding='utf-8')
ls = ['人工','智能']
print(a.writelines(ls))
a.close()

三、文件的读取位置与路径

  当对文件进行操作时,执行顺序是从上往下的,而且内存也会记录我们的读写位置,再次开始会从记录的位置在向下执行。

1、调整文件的读取位置

    文件指针像一个"光标"标记着当前读写操作的位置。当文件被打开时,指针默认位于文件开头(位置0);随着读取操作的进行,指针会自动向后移动;我们可以通过seek()方法可以手动调整指针位置,实现随机访问文件的不同部分。

seek(cookie,whence=0)

  cookie:相对于whence位置的偏移量,正数表示向右偏移,负数向左偏移,注意一个汉字的偏移为3。

  whence:表示指针设定的位置,默认0表示从头开始,值为1时表示从当前位置开始,值为2时表示从结尾处开始。

a = open(r'd:\python\PythonProject1\first.txt', 'r', encoding='utf-8')
print(a.readline(),end='')
print(a.readline(),end='')
a.seek(9,0)
print(a.readline(),end='')
a.close()

2、绝对路径和相对路径

  用open()函数读取文件时,文件路径的表示方法有两种。

1)、绝对路径

  绝对路径表示从磁盘根路径到目标文件的路径。

a = open(r'd:\python\PythonProject1\first.txt', 'r', encoding='utf-8')
print(a.read())
a.close()

2)、相对路径

  相对于当前程序文件的位置

'first.txt' - 当前文件夹下的first.txt

'../third.txt' - 上一级文件夹的first.txt

'data/second.txt' - 当前文件夹下data文件夹中的second.txt
a = open('first.txt', 'r', encoding='utf-8')
print(a.read())
a.close()
b= open(r'data/second.txt', 'r', encoding='utf-8')
print(b.read())
b.close()
c= open(r'../third.txt', 'r')
print(c.read())
c.close()

四、CSV文件

  CSV(逗号分隔值)是一种简单通用的纯文本格式,用于存储表格数据。它的每行代表一条数据记录,各个字段之间用逗号分隔,这种结构是数据交换、分析和人工智能项目中最常用的数据格式之一,能够被大多数数据处理工具和编程语言轻松读取和生成。

CSV文件示例:

a = open('cc.csv','r')
print(a.read())
a.close()
姓名,年龄,成绩
小王,18,95
小红,19,88
小明,20,92

  到这里我们就已经基本掌握了Python文件操作的基本技能。在下一篇里,我们将继续学习Python中另一个非常重要的概念'库'。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值