Python(文件读写)

文件读写介绍

在Python中,通过打开文件生成一个文件对象【文件描述符】操作磁盘上的文件,操作主要由文件读写

步骤:

1.打开文件(和缓冲区建立联系)

2.文件读写(把数据写到缓冲区或从缓冲区读取数据)

3.关闭文件(把缓冲区的数据写到磁盘上或把磁盘上的数据读到缓冲区,并断开和磁盘的联系)

格式:

f=open('文件名','打开方式','其他可选项',...)#打开文件

f.read()或f.write()#文件读写

f.close()#关闭文件

缓冲区:

程序写-->缓冲区-->磁盘

程序读<--缓冲区<--磁盘

通过文件描述符操控

打开文件

打开文件的格式:

open('文件名','打开方式')

打开方式有:

r 只读方式打开文件,从文件开头开始读,默认方式

w 只写方式打开文件,如果文件存在,就覆盖,如果不存在就创建文件

a 打开文件进行追加,写的内容会从原内容的最后开始添加,如果文件不存在,会创建文件

rb 二进制格式只读方式打开文件,从文件开头开始读,读出的是二进制

wb 二进制格式只写方式打开文件,如果文件存在,就覆盖,如果不存在就创建文件

ab 二进制格式打开文件进行追加,写的内容会从原内容的最后开始添加,如果文件不存在,会创建文件

r+ 读写模式打开文件,从文件开头开始读写

w+ 读写模式打开文件,从文件开头开始读写,如果文件存在,就覆盖,如果不存在就创建文件

a+ 读写模式打开文件,从原文件的尾部开始,如果文件存在,就覆盖,如果不存在就创建文件

rb+ 二进制格式读写模式打开文件,从文件开头开始读写

wb+ 二进制格式读写模式打开文件,从文件开头开始读写,如果文件存在,就覆盖,如果不存在就创建文件

ab+ 二进制格式读写模式打开文件,从原文件的尾部开始,如果文件存在,就覆盖,如果不存在就创建文件

案例:通过代码在磁盘上创建10个后缀为.txt的文件,文件名是1-10

for i   in   range(1,11):

            f=open('%d.txt'%i,'w')

写文件

操作步骤

1.打开文件:f=open('文件名','w')

2.写文件:f.write()/f.writelines()

3.刷新缓冲区:flush()--可写可不写

4.关闭文件:f.close()

说明:

1.write()函数需要传递一个字符串做为参数,不然报错

2.writelines()函数可以传入字符串,也可以传入字符序列,并将字符序列写入文件

格式一:

f=open("1.txt","w")

f.write("hello world")#默认是不换行

f.close()

格式二:

with open('1.txt','w') as f:

    f.write("11111")

    f.close()

#中文乱码问题 encoding='utf8'

with open('file/3.txt','w',encoding='utf8') as f2:

           f2.write('中文')

           f2.close()

#案例:把自己的名字,年龄,性别,电话写入一个1.txt文件,每个属性一行

f=open('1.txt','w',encoding='utf8')

f.writelines(['张三\n','19\n','男\n','13833445566'])

f.close()

#案例:把1-100数字写入2.txt文件中,每行一个数字、

f=open('2.txt','w')

i=1

while i<=100:

f.writelines([str(i)+"\n"])

i+=1

f.close()

读文件

操作步骤:

1.打开文件:open(),如果文件不存在,就报错

2.读文件:read()

3.关闭文件

注意:如果读的数据有中文,也要加encoding='utf8'

注意:文件读时,有游标问题,要注意

格式一:

f=open("文件名",'r')

f.read()#读所有的行,返回的是字符串

f.readline()#读首行,返回的是字符串

f.readlines()#读所有行,返回的是列表,带\n

f.read().splitlines()##读所有行,返回的是列表,不带\n

f.close()

格式二:

with open("文件名","r") as f:

    f.read()

    ...

    f.close()

案例:如何定义一个读txt文件的方法,并将读到的所有行内容返回并循环打印;

def readfunc(a,b):

with open(a,b)as f:

mystr=f.read().splitlines()

return mystr

mystr2=readfunc('2.txt','r')

for   i   in mystr2:

        print(i)

读写图片,音频,视频

读写图片,音频,视频要用二进制方式打开文件

#案例,请设计一个通用的,可以复制后缀为.jpg,.png,.mp3,.mp4格式的函数

def mycopypng(a,b):

f =open(a,'rb')

mystr = f.read()

f.close()

print(mystr)

# 写

f =open(b,'wb')

f.write(mystr)

f.close()

mycopypng('资源/mov.mp4','资源/mov2.mp4')

CSV文件读写

1.csv是一种文件格式,csv本质上是一个纯文本文件,可以作为不同程序之间的数据交互格式

2.读写csv格式的文件,需要导入csv模块

3.默认写数据会有空行,需要在open函数参数中添加newline=''

4.使用writerow来写入数据

#案例:把下面内容写入到CSV文件中

学号 姓名 性别 班级 英语 数学 语文

1   张飞  男   2   90  99  99

2   马超  男   3   80  90  98

3   关羽  男   1   99  80  95

4   黄忠  男   2   85  99  97

5   赵云  男   1   95  85  96

with open('资源/2.csv','w',encoding='utf8',newline='')as f:

obj = csv.writer(f)# 将文件描述符对象转换为csv的对象

obj.writerow(['学号','姓名',' 性别','班级',' 英语','数学','语文'])

obj.writerow(['1 ','张飞 ',' 男','  2 ','  90','  99','  99'])

obj.writerow(['2 ',' 马超 ',' 男','  3 ','  80','  90','  98'])

XML文件读

XML:可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言

要引入import xml.etree.ElementTree as ET

xml.etree.ElementTree取别名叫ET

if __name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。

案例:读取xml文件中用户名和密码

def read_xml(path,node_name):

datas=[]

tree=ET.parse(path)#打开ximl文件

    root=tree.getroot()#获取根结点config结点

#root.iter(子节点名字),该函数是获取子节点

    for iin root.iter(node_name):#有可能根节点下有很多个node_name节点,所以这里使用循环

        datas.append(i.text)#获取子节点的内容并存储到列表中

    return datas

name=read_xml('资源/a.xml','username')

print(name)

password=read_xml('资源/a.xml','password')

print(password)

EXCEL文件读

Excel文件:包含xls和xlsx两种格式,读的方式一模一样,只是文件后缀名不一致

# pip install xlrd  要下载xlrd模块,pycharm下面终端输入,管理员身份打开pycharm

要引入import xlrd

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,110评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,443评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,474评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,881评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,902评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,698评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,418评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,332评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,796评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,968评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,110评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,792评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,455评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,003评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,130评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,348评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,047评论 2 355

推荐阅读更多精彩内容