Python学习笔记-文件操作与CSV格式

文件打开和关闭

程序中的数据都存储在内存中,当程序执行完毕后,内存中的数据将丢失。文件可以用来进行数据的长期保存。

open函数

打开一个要做读/写操作的文件,打开文件后会返回一个文件对象,利用该文件对象可完成数据的读写操作。其常用形式为:

open(filename,mode='r')
# filename是要打开文件的路径;
# mode是文件打开方式,不同文件打开方式可以组合使用(默认为r=rt)

例:open函数使用示例。

f=open('D:\\Python\\test.txt','w+')

文件打开方式

r:以只读方式打开文件(默认),不允许写数据。
w:以写方式打开文件,不允许读数据。若文件已存在,则将清空文件内容;若文件不存在,则会创建新文件。
a:以追加写方式打开文件(文件指针指向文件末尾),不允许读数据。如文件不存在会创建新文件。
b:以二进制打开文件。
t:以文本方式打开文件(默认)。
+:以读写方式打开文件,可以读/写数据。

注:文件中有一个文件指针(光标位置),其指向当前要读/写数据的位置。

常用文件打开方式组合

r+或rt+:以文本方式打开文件并可对文件进行读写操作。文件不存在会报错。
w+或wt+:以文本方式打开文件并可以对文件进行读写操作,文件不存在会新建文件;文件已存在,会清空文件内容。
a+或at+:以文本、追加方式打开文件,可对文件进行读写操作。文件不存在会创建新文件;文件已存在则文件指针会自动移到文件尾。
rb+:与r+类似,只是已二进制方式打开文件
wb+:与w+类似,只是已二进制方式打开文件
ab+:与a+类似,只是已二进制方式打开文件

文件关闭close

使用open函数打开文件并完成读写操作后,必须使用文件对象的close方法将文件关闭。

f=open('test.txt','w+')
print('文件已关闭:',f.closed)  # False

f.close()
print('文件已关闭:',f.closed)	# True

文件已关闭: False
文件已关闭: True

with语句

让系统在文件操作完毕后自动关闭文件,从而避免忘记调用close方法而不能及时释放文件资源的问题。

with open('test.txt','w+') as f:
    pass
print('文件已关闭:',f.closed)

文件已关闭: True

文件对象方法(write和read)

write方法 可将字符串写到文件中

f.write(sr)
# f 是open函数返回的文件对象。
# str是要写入到文件中的字符串。

f.write函数执行完毕后将返回写入到文件中的字符数(包括换行符\n)

charnum=0
with open('test.txt','w+') as f:
    charnum+=f.write('Python是一门流行的编程语言!\n')
    
    charnum+=f.write('我喜欢学习Python语言!')
print('总共向文件写入的字符数:%d'%(charnum))

总共向文件写入的字符数:32

read方法 从文件中读取数

f.read(n=-1)
# f是open函数返回的文件对象。
n 指定了要读取的字节数(默认-1表示读取文件中的所有数据)。
# read 方法将从文件中读取的数据返回。

例:read方法使用示例。

with open('test.txt','r') as f:
    content1=f.read()
    content2=f.read()
print('content1:\n%s'%content1)
print('content2:\n %s'%content2)

content1:
Python是一门流行的编程语言!
我喜欢学习Python语言!
content2:
  • 第一次调用read方法时一次性地把文件中的所有数据读取到了conten1中,且此时文件指针自动移到刚读取数据的后面(即文件尾);
  • 第二次再调用read方法时不会读取到任何数据,因此content2是一个空字符串。

readline(每次一行)

将从文件中每次读取一行数据并以列表返回。

ls=[]
with open('test.txt','r') as f:
    ls.append(f.readline())
    ls.append(f.readline())
print(ls)

['Python是一门流行的编程语言!\n', '我喜欢学习Python语言!']

readlines(按行读取所有数据)

将从文件中按行读取的所有数据以列表形式返回。

with open('test.txt','r') as f:
    ls=f.readlines()
    #ls=list(f) 	# 使用list函数也可以得到readlines同样的结果
print(ls)

['Python是一门流行的编程语言!\n', '我喜欢学习Python语言!']

seek(文件指针/光标位置,无返回值)

f.seek(pos.whence=0)
# pos是要移动字节数
# whence是参照位置,默认0表示文件首,1和2分别表示以当前文件指针位置和文件尾作为参照位置.

通过seek方式实现的文件随机读写主要用于二进制文件,与seek对应的tell方法(获取当前文件指针的位置)。

例:seek使用示例。

with open('test.txt','r') as f:
    f.seek(6,0)		# 从文件首(0),向右移动6字节数
    print(f.readline())
    
是一门流行的编程语言!

注意:以文本方式打开文件后,仅支持以文件首作为参照位置;而以二进制方式打开文件后,可以支持全部的三种参照方式。

一维数据

指数据元素的值由一个因素唯一确定。
对于一维有序数据,可以使用列表存储;一维无序数据,可以使用集合存储。
在这里插入图片描述
例:对于5名学生的语文课成绩,可以使用如下形式的列表存储:
data1D=[90,70,95,98,65]

二维数据

指数据元素的值由两个因素共同确定,二维数据可以看作是由多个一维数据组成。
通过二维列表可以存储二维数据。
在这里插入图片描述
在这里插入图片描述
要使用二维列表存储5名学生在3门课上的成绩,需要写成如下形式:

data2D=[[90,98,87],	# 第1名学生的3门课成绩
[70,89,92]	# 第二名学生
[95,78,81]	# 第三名学生
[98,90,95]	# 第四名学生
[65,72,70]]	# 第五名学生

CSV操作一维、二维数据

(Comma-Separated Values)是一种国际通用的一维、二维数据格式,其对应文件的扩展名为.csv,可使用Excel软件直接打开。

CSV文件中每行对应一个一维数据,一维数据的各数据元素之间用英文半角逗号分隔(逗号两边不需要加额外的空格);对于缺失元素,也要保留逗号,使得元素的位置能够与实际数据对应。

CSV文件中的多行形成了一个二维数据,即一个二维数据由多个一维数据组成;
二维数据中的第一行可以是列标题,也可以直接存储数据(即没有列标题)。

CSV文件存储示例

对于一维数据,使用CSV文件存储的结果为:90,70,95,98,65

对于二维数据,使用CSV文件存储的结果为

90,98,87,
70,89,92
95,78,81
98,90,95
65,72,70

CSV文件的写操作(csv.writer)

CSV模块的writer方法可以生成一个writer对象,使用该对象可以将数据以逗号分隔的形式写入到CSV文件中,其语法格式为:

csv.writer(csvfile)
'''
csvfile是一个具有writer方法的对象。
如果Open函数返回的文件对象作为实参传给csvfile,则调用open函数打开文件时必须加上一个关键字参数"newline=''"
'''

生成writer对象后,就可以使用csv模块的writerrow和writerrows方法向csv文件中写入数据。

writer.writerow(row)	# row是要写入到CSV文件中的一行数据(如一维列表)
writer.writerrows(row)	# rows是要写入到csv文件中的多行数据(如二维列表)
# 

CSV文件的读操作(csv.reader)

可生成一个reader对象,使用该对象可以将以逗号分隔的数据从CSV文件读取出来,其语法格式为:

csv.reader(csvfile)
''' 
csvfile要求传入一个迭代器。
open函数返回的文件对象除了是可迭代对象,同时也是迭代器。
如果将文件对象作为实参传给csvfile,则调用open函数打开文件时应加上一个关键字参数"newline=''"
CSV文件中的每一行数据,每次遍历会返回一个由字符串组成的列表
'''

CSV文件读写示例

import csv
data2D=([[90,98,87],
[70,89,92],
[95,78,81],
[98,90,95],
[65,72,70]])

with open('score.csv','w',newline='') as f:
    csvwriter=csv.writer(f) # 得到writer对象
    csvwriter.writerow(['语文','数学','英语']) # 先将列标题写入CSV文件
    csvwriter.writerows(data2D) # 将二维列表中的数据写入CSV文件

ls2=[]
with open('score.csv','r',newline='') as f:
    csvreader=csv.reader(f)     # 得到read对象
    for line in csvreader:      # 将CSV文件中一行数据作为列表读取到line中
        ls2.append(line)
print(ls2)


[['语文', '数学', '英语'], ['90', '98', '87'], ['70', '89', '92'], ['95', '78', '81'], ['98', '90', '95'], ['65', '72', '70']]
  • 20
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python学习笔记完整的话题很广泛,这里只能提供一个简单的概述。Python是一种高级编程语言,易于学习和使用,它在各个领域都有广泛的应用。以下是一些学习Python的关键点: 1. 安装Python:首先,你需要安装Python解释器。你可以从官方网站(https://www.python.org)下载适合你操作系统的版本,并按照官方指南进行安装。 2. 语法基础:学习Python的第一步是了解其基本语法。掌握变量、数据类型、运算符、条件语句、循环结构等基本概念。你可以通过阅读教程或参考Python官方文档来学习。 3. 数据结构:了解Python中常用的数据结构,如列表、元组、集合和字典。这些数据结构对于存储和操作数据非常重要。 4. 函数和模块:学习如何定义和调用函数,以及如何将代码组织成模块。了解如何使用Python标准库中的模块来扩展功能。 5. 文件操作学习如何读写文件,并了解文件处理的常用技巧。这对于处理文本文件CSV文件和JSON文件等非常有用。 6. 异常处理:了解如何使用异常处理机制来捕获和处理错误。这有助于编写更健壮和可靠的代码。 7. 面向对象编程:学习如何使用面向对象编程(OOP)的概念和技术。掌握类、对象、继承和多态等概念。 8. 数据库操作:了解如何使用Python连接和操作数据库。学习SQL语言和Python数据库API(如SQLite、MySQL或PostgreSQL)。 9. Web开发:学习使用Python开发Web应用程序。了解基本的Web开发框架(如Django或Flask)和前端技术(如HTML、CSS和JavaScript)。 10. 数据分析和机器学习学习如何使用Python进行数据分析和机器学习。掌握常用的数据分析库(如NumPy和Pandas)和机器学习库(如Scikit-learn)。 以上只是Python学习的一些基本方面,你可以根据自己的兴趣和目标进一步深入学习和实践。记住,不断练习和实践是提高编程能力的关键!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值