文件的IO操作

在了解文件的IO操作前,我们需要了解在计算机中什么才是文件?

一、文件的概述

计算机中的所有数据都是文件!
(1)文件的分类
广义上说文件是按照文件的类型进行分类的,比如说:视频文件、音频文件、图片文件、文档文件…
狭义上说文件是按照组成文件的数据格式进行分类的:文本文件,二进制文件。
文本文件:可以使用记事本正常打开的文件,里面是各种编程语言的源代码。
二进制文件:使用记事本打开会出现乱码的文件。
(2)文件的作用
使用文件的目的是把一些数据存储存放起来
(3)使用文件的流程
操作一个文件的流程一般是:打开文件,读写文件,关闭文件。通过程序操作文件的流程也是这三步。

二、文件的读写操作

python中提供了内置函数open()可以对文件进行读写操作。在cmd命令行中输入help(open),可以看到open()的详细用法。

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

(1)文件IO
IO:Input&Output
①输出(Output):程序中的数据保存到计算机文件中
②输入(Input):将计算机的文件内容读取到程序中
(2)文本文件读取

file = open('file/test.txt', mode='r')   # 以读取的方式打开文件,文件打开的默认方式也是读取(mode='r')
ret = file.read()             # 读取文件的内容
print(ret)                    # 打印从文件读取的内容
file.close()         #关闭打开文件

(3)文本文件的写入

file = open('file/test.txt', mode='w')    # 以写入的方式打开文件(mode='w'),如果文件不存在则会创建该文件
file.write("人生苦短,我用python")     # 向文件写入文本
file.close()                           # 关闭文件

(4)二进制文件的读取

file = open("test1.txt", mode="rb")      # b表示的是二进制文件
file.read()
file.close()

(5)二进制文件的写入

file = open('file/test.txt', mode='rw')    # 以写入的方式打开二进制文件(mode='wb'),如果文件不存在则会创建该文件
file.close()                           # 关闭文件

(6)文件复制案例代码
文件复制其实可以理解为将一个文件中的数据读取出来,然后写入一个新的文件中,这就完成了文件的复制操作。

def copy(file1, file2):"""这是一个文件复制函数file1是被复制文件file2是复制后的文件"""# 1、打开被复制的文件file1f1 = open(file1, mode='rb')# 2、读取file1文件的内容content = f1.read()# 3、以写入的方式打开file2文件f2 = open(file2, mode='wb')# 4、将读取到的file1文件的内容写入file2文件中f2.write(content)# 5、关闭file2文件f2.close()# 6、关闭file1文件f1.close()

(7)文件复制案例完善
在上面的文件复制函数中,我们执行之后发现文件复制完成后没有提示,这对于用户体验而言是极其不友好的,因此咱们来给该文件复制函数增加一个读取进度及完成提示功能。

"""
通过os.path.getsize()获取文件的大小
"""
import os
def copy(file1, file2):"""这是一个文件复制函数file1是被复制文件file2是复制后的文件"""# 1、打开被复制的文件file1print('开始读取文件{}的内容'.format(file1))f1 = open(file1, mode='rb')print(f'文件大小{os.path.getsize(file1)/1024}k')# 2、读取file1文件的内容print('开始读取文件{}的数据'.format(file1))content = f1.read()# 3、以写入的方式打开file2文件f2 = open(file2, mode='wb')# 4、将读取到的file1文件的内容写入file2文件中print('开始读取文件{}的数据'.format(file1))f2.write(content)# 5、关闭file2文件f2.close()# 6、关闭file1文件f1.close()print("文件复制完毕")

(8)文件的读写操作同时执行
r+/rb+:打开一个文件/二进制文件并用于读写,文件指针会放在文件开头;用r+方法打开文件,则可以既对这个文件进行读取操作,也可以进行写入操作。但是执行写入操作的时候,写入内容会把原文件内容覆盖,写入多少覆盖多少。
未写入前文件111.txt内容:

# r+ 打开一个文件用于读写。文件指针将会放在文件的开头。写入内容会把原文件内容覆盖,写入多少覆盖多少。
file = open("demo_02/111.txt","r+")
file.write("12345")
file.close()

执行写入操作后文件111.txt内容:

w+/wb+:打开一个文件/二进制文件用于读写,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果文件不存在则创建新文件。
未执行代码前的文件:

# w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,
# 即 原有内容会被删除。如果该文件不存在,创建新文件。
file = open("demo_02/1.txt","w+")
ret = file.read()
print(ret)
file.close()

执行代码后的文件列表

a+/ab+:打开一个文件/二进制文件用于读写,如果文件已存在,指针放在文件末尾,即新写入的内容追加到文件末尾;如果文件不存在则创建新文件用于读写。
执行代码前:

# a+  打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。
# 文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
file = open("demo_02/2.txt","a+")
ret = file.read()
print(ret)
file.close()

执行代码后:

三、with语句

with语句是是文件读写操作的一大福音。正常情况下咱们每次打开文件后都需要关闭文件。但是使用with语句后就可以自动关闭文件,不用手动关闭了。

'''with语句具体语法'''
with open(file, mode="r") as f:# 操作文件内容,with语句中包含的代码执行完成f.read()# 自动关闭文件(自动调用close())

四、csv文件的操作

csv是python 中提供的一个内建模块,使用的时候需要import csv引入操作

import csv
# (1)写入数据
# 系统数据
users = [["大树", 18, "男"],["阿飞", 20, "女"]
]# 打开文件,并获取到csv模块的writer对象
with open("user.csv", "w", newline="") as file:# 获取writer对象writer = csv.writer(file)# 写标题writer.writerow(["姓名", "年龄", "性别"])# 写入系统用户,保存数据writer.writerows(users)# (2)读取数据
with open("user.csv", "r") as file:# 获取reader对象reader = csv.reader(file)# 展示数据for row in reader:print(row)

csv模块案例

# 这是一个与电影有关的字典,字典中又包含列表,列表中又包含字典
# 要实现的结果,将电影名称,主演,链接等等分别形成一列,并写入csv文件中。
movie_dict2 = {'data': [{'directors': ['费振翔'], 'rate': '8.3', 'cover_x': 1429, 'star': '40', 'title': '龙岭迷窟', 'url': 'https://movie.douban.com/subject/30488569/', 'casts': ['潘粤明', '张雨绮', '姜超', '高伟光', '佟磊'], 'cover': 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2593664928.jpg', 'id': '30488569', 'cover_y': 2000}, {'directors': ['莱恩·约翰逊'], 'rate': '8.2', 'cover_x': 1685, 'star': '40', 'title': '利刃出鞘', 'url': 'https://movie.douban.com/subject/30318116/', 'casts': ['丹尼尔·克雷格', '安娜·德·阿玛斯', '克里斯·埃文斯', '杰米·李·柯蒂斯', '迈克尔·珊农'], 'cover': 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2574172427.jpg', 'id': '30318116', 'cover_y': 2500}, {'directors': ['伍思薇'], 'rate': '8.1', 'cover_x': 1500, 'star': '40', 'title': '真心半解', 'url': 'https://movie.douban.com/subject/33420285/', 'casts': ['莉娅·刘易斯', '丹尼尔·迪默', '艾丽克西斯·勒梅尔', '沃尔夫冈·诺沃格拉茨', '邹兆龙'], 'cover': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2594916975.jpg', 'id': '33420285', 'cover_y': 2222}, {'directors': ['山姆·哈格雷夫'], 'rate': '7.1', 'cover_x': 1500, 'star': '35', 'title': '惊天营救', 'url': 'https://movie.douban.com/subject/30314127/', 'casts': ['克里斯·海姆斯沃斯', '大卫·哈伯', '格什菲·法拉哈尼', '德里克·卢克', '兰迪普·弘达'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2593425210.jpg', 'id': '30314127', 'cover_y': 2222}, {'directors': ['曾国祥'], 'rate': '8.3', 'cover_x': 5906, 'star': '40', 'title': '少年的你', 'url': 'https://movie.douban.com/subject/30166972/', 'casts': ['周冬雨', '易烊千玺', '尹昉', '周也', '吴越'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2572166063.jpg', 'id': '30166972', 'cover_y': 8268}, {'directors': ['弗兰克·德拉邦特'], 'rate': '9.7', 'cover_x': 2000, 'star': '50', 'title': '肖申克的救赎', 'url': 'https://movie.douban.com/subject/1292052/', 'casts': ['蒂姆·罗宾斯', '摩根·弗里曼', '鲍勃·冈顿', '威廉姆·赛德勒', '克兰西·布朗'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg', 'id': '1292052', 'cover_y': 2963}, {'directors': ['宫崎骏'], 'rate': '9.4', 'cover_x': 1080, 'star': '45', 'title': '千与千寻', 'url': 'https://movie.douban.com/subject/1291561/', 'casts': ['柊瑠美', '入野自由', '夏木真理', '菅原文太', '中村彰男'], 'cover': 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2557573348.jpg', 'id': '1291561', 'cover_y': 1560}, {'directors': ['拜伦·霍华德', '瑞奇·摩尔', '杰拉德·布什'], 'rate': '9.2', 'cover_x': 1418, 'star': '45', 'title': '疯狂动物城', 'url': 'https://movie.douban.com/subject/25662329/', 'casts': ['金妮弗·古德温', '杰森·贝特曼', '伊德里斯·艾尔巴', '珍妮·斯蕾特', '内特·托伦斯'], 'cover': 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2315672647.jpg', 'id': '25662329', 'cover_y': 2005}, {'directors': ['文牧野'], 'rate': '9.0', 'cover_x': 2810, 'star': '45', 'title': '我不是药神', 'url': 'https://movie.douban.com/subject/26752088/', 'casts': ['徐峥', '王传君', '周一围', '谭卓', '章宇'], 'cover': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2561305376.jpg', 'id': '26752088', 'cover_y': 3937}, {'directors': ['詹姆斯·卡梅隆'], 'rate': '9.4', 'cover_x': 2015, 'star': '45', 'title': '泰坦尼克号', 'url': 'https://movie.douban.com/subject/1292722/', 'casts': ['莱昂纳多·迪卡普里奥', '凯特·温丝莱特', '比利·赞恩', '凯西·贝茨', '弗兰西丝·费舍'], 'cover': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p457760035.jpg', 'id': '1292722', 'cover_y': 3000}, {'directors': ['饺子'], 'rate': '8.5', 'cover_x': 5594, 'star': '45', 'title': '哪吒之魔童降世', 'url': 'https://movie.douban.com/subject/26794435/', 'casts': ['吕艳婷', '囧森瑟夫', '瀚墨', '陈浩', '绿绮'], 'cover': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2563780504.jpg', 'id': '26794435', 'cover_y': 8268}, {'directors': ['陈凯歌'], 'rate': '9.6', 'cover_x': 600, 'star': '50', 'title': '霸王别姬', 'url': 'https://movie.douban.com/subject/1291546/', 'casts': ['张国荣', '张丰毅', '巩俐', '葛优', '英达'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2561716440.jpg', 'id': '1291546', 'cover_y': 889}, {'directors': ['罗伯特·泽米吉斯'], 'rate': '9.5', 'cover_x': 1892, 'star': '50', 'title': '阿甘正传', 'url': 'https://movie.douban.com/subject/1292720/', 'casts': ['汤姆·汉克斯', '罗宾·怀特', '加里·西尼斯', '麦凯尔泰·威廉逊', '莎莉·菲尔德'], 'cover': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p1484728154.jpg', 'id': '1292720', 'cover_y': 2574}, {'directors': ['吕克·贝松'], 'rate': '9.4', 'cover_x': 658, 'star': '45', 'title': '这个杀手不太冷', 'url': 'https://movie.douban.com/subject/1295644/', 'casts': ['让·雷诺', '娜塔莉·波特曼', '加里·奥德曼', '丹尼·爱罗', '彼得·阿佩尔'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p511118051.jpg', 'id': '1295644', 'cover_y': 980}, {'directors': ['涅提·蒂瓦里'], 'rate': '9.0', 'cover_x': 4500, 'star': '45', 'title': '摔跤吧!爸爸', 'url': 'https://movie.douban.com/subject/26387939/', 'casts': ['阿米尔·汗', '法缇玛·萨那·纱卡', '桑亚·玛荷塔', '阿帕尔夏克提·库拉那', '沙克希·坦沃'], 'cover': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2457983084.jpg', 'id': '26387939', 'cover_y': 6300}, {'directors': ['罗伯·莱纳'], 'rate': '9.1', 'cover_x': 986, 'star': '45', 'title': '怦然心动', 'url': 'https://movie.douban.com/subject/3319755/', 'casts': ['玛德琳·卡罗尔', '卡兰·麦克奥利菲', '瑞贝卡·德·莫妮', '安东尼·爱德华兹', '约翰·马奥尼'], 'cover': 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p501177648.jpg', 'id': '3319755', 'cover_y': 1466}, {'directors': ['拉吉库马尔·希拉尼'], 'rate': '9.2', 'cover_x': 3030, 'star': '45', 'title': '三傻大闹宝莱坞', 'url': 'https://movie.douban.com/subject/3793023/', 'casts': ['阿米尔·汗', '卡琳娜·卡普尔', '马达范', '沙尔曼·乔希', '奥米·瓦依达'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p579729551.jpg', 'id': '3793023', 'cover_y': 4364}, {'directors': ['郭帆'], 'rate': '7.9', 'cover_x': 1786, 'star': '40', 'title': '流浪地球', 'url': 'https://movie.douban.com/subject/26266893/', 'casts': ['屈楚萧', '吴京', '李光洁', '吴孟达', '赵今麦'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2545472803.jpg', 'id': '26266893', 'cover_y': 2500}, {'directors': ['柯汶利'], 'rate': '7.7', 'cover_x': 1429, 'star': '40', 'title': '误杀', 'url': 'https://movie.douban.com/subject/30176393/', 'casts': ['肖央', '谭卓', '陈冲', '姜皓文', '秦沛'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2576090251.jpg', 'id': '30176393', 'cover_y': 2000}, {'directors': ['孙墨龙'], 'rate': '7.4', 'cover_x': 1400, 'star': '35', 'title': '我是余欢水', 'url': 'https://movie.douban.com/subject/33442331/', 'casts': ['郭京飞', '苗苗', '高露', '岳旸', '高叶'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2574916002.jpg', 'id': '33442331', 'cover_y': 2139}]
}

实现功能代码:

import csvmovie_dict2 = {'data': [{'directors': ['费振翔'], 'rate': '8.3', 'cover_x': 1429, 'star': '40', 'title': '龙岭迷窟', 'url': 'https://movie.douban.com/subject/30488569/', 'casts': ['潘粤明', '张雨绮', '姜超', '高伟光', '佟磊'], 'cover': 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2593664928.jpg', 'id': '30488569', 'cover_y': 2000}, {'directors': ['莱恩·约翰逊'], 'rate': '8.2', 'cover_x': 1685, 'star': '40', 'title': '利刃出鞘', 'url': 'https://movie.douban.com/subject/30318116/', 'casts': ['丹尼尔·克雷格', '安娜·德·阿玛斯', '克里斯·埃文斯', '杰米·李·柯蒂斯', '迈克尔·珊农'], 'cover': 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2574172427.jpg', 'id': '30318116', 'cover_y': 2500},{'directors': ['伍思薇'], 'rate': '8.1', 'cover_x': 1500, 'star': '40', 'title': '真心半解', 'url': 'https://movie.douban.com/subject/33420285/', 'casts': ['莉娅·刘易斯', '丹尼尔·迪默', '艾丽克西斯·勒梅尔', '沃尔夫冈·诺沃格拉茨', '邹兆龙'], 'cover': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2594916975.jpg', 'id': '33420285', 'cover_y': 2222}, {'directors': ['山姆·哈格雷夫'], 'rate': '7.1', 'cover_x': 1500, 'star': '35', 'title': '惊天营救', 'url': 'https://movie.douban.com/subject/30314127/', 'casts': ['克里斯·海姆斯沃斯', '大卫·哈伯', '格什菲·法拉哈尼', '德里克·卢克', '兰迪普·弘达'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2593425210.jpg', 'id': '30314127', 'cover_y': 2222},{'directors': ['曾国祥'], 'rate': '8.3', 'cover_x': 5906, 'star': '40', 'title': '少年的你', 'url': 'https://movie.douban.com/subject/30166972/', 'casts': ['周冬雨', '易烊千玺', '尹昉', '周也', '吴越'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2572166063.jpg', 'id': '30166972', 'cover_y': 8268}, {'directors': ['弗兰克·德拉邦特'], 'rate': '9.7', 'cover_x': 2000, 'star': '50', 'title': '肖申克的救赎', 'url': 'https://movie.douban.com/subject/1292052/', 'casts': ['蒂姆·罗宾斯', '摩根·弗里曼', '鲍勃·冈顿', '威廉姆·赛德勒', '克兰西·布朗'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg', 'id': '1292052', 'cover_y': 2963},{'directors': ['宫崎骏'], 'rate': '9.4', 'cover_x': 1080, 'star': '45', 'title': '千与千寻', 'url': 'https://movie.douban.com/subject/1291561/', 'casts': ['柊瑠美', '入野自由', '夏木真理', '菅原文太', '中村彰男'], 'cover': 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2557573348.jpg', 'id': '1291561', 'cover_y': 1560}, {'directors': ['拜伦·霍华德', '瑞奇·摩尔', '杰拉德·布什'], 'rate': '9.2', 'cover_x': 1418, 'star': '45', 'title': '疯狂动物城', 'url': 'https://movie.douban.com/subject/25662329/', 'casts': ['金妮弗·古德温', '杰森·贝特曼', '伊德里斯·艾尔巴', '珍妮·斯蕾特', '内特·托伦斯'], 'cover': 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2315672647.jpg', 'id': '25662329', 'cover_y': 2005},{'directors': ['文牧野'], 'rate': '9.0', 'cover_x': 2810, 'star': '45', 'title': '我不是药神', 'url': 'https://movie.douban.com/subject/26752088/', 'casts': ['徐峥', '王传君', '周一围', '谭卓', '章宇'], 'cover': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2561305376.jpg', 'id': '26752088', 'cover_y': 3937}, {'directors': ['詹姆斯·卡梅隆'], 'rate': '9.4', 'cover_x': 2015, 'star': '45', 'title': '泰坦尼克号', 'url': 'https://movie.douban.com/subject/1292722/', 'casts': ['莱昂纳多·迪卡普里奥', '凯特·温丝莱特', '比利·赞恩', '凯西·贝茨', '弗兰西丝·费舍'], 'cover': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p457760035.jpg', 'id': '1292722', 'cover_y': 3000},{'directors': ['饺子'], 'rate': '8.5', 'cover_x': 5594, 'star': '45', 'title': '哪吒之魔童降世', 'url': 'https://movie.douban.com/subject/26794435/', 'casts': ['吕艳婷', '囧森瑟夫', '瀚墨', '陈浩', '绿绮'], 'cover': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2563780504.jpg', 'id': '26794435', 'cover_y': 8268}, {'directors': ['陈凯歌'], 'rate': '9.6', 'cover_x': 600, 'star': '50', 'title': '霸王别姬', 'url': 'https://movie.douban.com/subject/1291546/', 'casts': ['张国荣', '张丰毅', '巩俐', '葛优', '英达'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2561716440.jpg', 'id': '1291546', 'cover_y': 889},{'directors': ['罗伯特·泽米吉斯'], 'rate': '9.5', 'cover_x': 1892, 'star': '50', 'title': '阿甘正传', 'url': 'https://movie.douban.com/subject/1292720/', 'casts': ['汤姆·汉克斯', '罗宾·怀特', '加里·西尼斯', '麦凯尔泰·威廉逊', '莎莉·菲尔德'], 'cover': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p1484728154.jpg', 'id': '1292720', 'cover_y': 2574}, {'directors': ['吕克·贝松'], 'rate': '9.4', 'cover_x': 658, 'star': '45', 'title': '这个杀手不太冷', 'url': 'https://movie.douban.com/subject/1295644/', 'casts': ['让·雷诺', '娜塔莉·波特曼', '加里·奥德曼', '丹尼·爱罗', '彼得·阿佩尔'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p511118051.jpg', 'id': '1295644', 'cover_y': 980},{'directors': ['涅提·蒂瓦里'], 'rate': '9.0', 'cover_x': 4500, 'star': '45', 'title': '摔跤吧!爸爸', 'url': 'https://movie.douban.com/subject/26387939/', 'casts': ['阿米尔·汗', '法缇玛·萨那·纱卡', '桑亚·玛荷塔', '阿帕尔夏克提·库拉那', '沙克希·坦沃'], 'cover': 'https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2457983084.jpg', 'id': '26387939', 'cover_y': 6300}, {'directors': ['罗伯·莱纳'], 'rate': '9.1', 'cover_x': 986, 'star': '45', 'title': '怦然心动', 'url': 'https://movie.douban.com/subject/3319755/', 'casts': ['玛德琳·卡罗尔', '卡兰·麦克奥利菲', '瑞贝卡·德·莫妮', '安东尼·爱德华兹', '约翰·马奥尼'], 'cover': 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p501177648.jpg', 'id': '3319755', 'cover_y': 1466},{'directors': ['拉吉库马尔·希拉尼'], 'rate': '9.2', 'cover_x': 3030, 'star': '45', 'title': '三傻大闹宝莱坞', 'url': 'https://movie.douban.com/subject/3793023/', 'casts': ['阿米尔·汗', '卡琳娜·卡普尔', '马达范', '沙尔曼·乔希', '奥米·瓦依达'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p579729551.jpg', 'id': '3793023', 'cover_y': 4364}, {'directors': ['郭帆'], 'rate': '7.9', 'cover_x': 1786, 'star': '40', 'title': '流浪地球', 'url': 'https://movie.douban.com/subject/26266893/', 'casts': ['屈楚萧', '吴京', '李光洁', '吴孟达', '赵今麦'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2545472803.jpg', 'id': '26266893', 'cover_y': 2500},{'directors': ['柯汶利'], 'rate': '7.7', 'cover_x': 1429, 'star': '40', 'title': '误杀', 'url': 'https://movie.douban.com/subject/30176393/', 'casts': ['肖央', '谭卓', '陈冲', '姜皓文', '秦沛'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2576090251.jpg', 'id': '30176393', 'cover_y': 2000}, {'directors': ['孙墨龙'], 'rate': '7.4', 'cover_x': 1400, 'star': '35', 'title': '我是余欢水', 'url': 'https://movie.douban.com/subject/33442331/', 'casts': ['郭京飞', '苗苗', '高露', '岳旸', '高叶'], 'cover': 'https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2574916002.jpg', 'id': '33442331', 'cover_y': 2139}]
}# 标题列表
title_dict = []# 内容列表
content_dict_all = []for i in movie_dict2:for a in movie_dict2[i]:    # movie.movie_dict[i]是一个列表,此时的a是一个字典content_dict_all.append(a.values())       # 将电影的内容分别加入内容列表中for title in a:title_dict.append(title)     # 获取对应的列标题print(content_dict_all)
print(title_dict)file = open("movie.csv", mode="w", newline="")
writer = csv.writer(file)
writer.writerows([title_dict])     # 将标题写入csv文件中
writer.writerows(content_dict_all)      # 将列表的电影对应写入csv文件中
file.close()

拓展一下:文件定位

# tell()文件定位:文件指针的位置
with open("file.txt", "r") as f:print(f.tell())
# seek(offset, whence)  offset偏移量,whence定位(0文件开头,1定位不变,2文件结尾)
with open("test.txt", "r") as f:print(f.tell())f.seek(2, 0)print(f.tell())print(f.read())

python——文件的IO操作(IO==InputOutput)相关推荐

  1. IO操作 IO异常处理

    /* * 程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:IO操作 IO ...

  2. Python文件的读写操作

    使用Python编程时,经常会遇到读写文件的操作.对于读写文件的各种模式(如阅读.写入.追加等)有时真的会迷惑人,以及搞不清open.read.readline.readlines.write.wri ...

  3. Python 文件和目录操作总结

    Python文件和目录操作总结: 1. Python 中os模块基本命令 头文件 import os # 提供对操作系统进行调用的接口 os常用指令 1 os.getcwd() # 获取当前工作目录, ...

  4. Python文件及目录操作(基本文件操作篇)

    ​ 活动地址:CSDN21天学习挑战赛 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩:迟一天就多一天平庸的困扰. 学习日记 目录 学习日记 一.前言 二.基本文件操作 1.创建和打开文件 2. ...

  5. python文件的基础操作

    import osprint('\n','获取当前工作目录'.center(40,'-')) print(os.getcwd())print('\n','获取当前工作目录中的内容'.center(40 ...

  6. python代码大全表解释-python文件及目录操作代码汇总

    前言 在python中,内置了文件(file)对象,通过一些内置的方法就可以实现对文件的操作,例如open()方法创建一个文件对象,write()方法向文件写入内容. 一.文件基本操作 1.创建和打开 ...

  7. python基础代码大全-python文件及目录操作代码汇总

    前言 在python中,内置了文件(file)对象,通过一些内置的方法就可以实现对文件的操作,例如open()方法创建一个文件对象,write()方法向文件写入内容. 一.文件基本操作 1.创建和打开 ...

  8. python文件有关的操作

    python 文件 -文件打开 变量名=open(文件名,打开模式) 文件名:可以是绝对路径,和相对路径,如果和原文件在同一目录下,可以直接写文件名 打开模式: 文件的打开模式 描述 'r' 只读模式 ...

  9. python 文件和目录操作

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() os.getcwd() 输出 ...

  10. python 文件和路径操作函数小结

    1.  文件路径的相关处理 用 os.path 就完全解决所有问题,包括路径拼接.路径拆分.相对路径提取.文件存在性判断.文件遍历.递归遍历等等.相关函数有: os.path.join os.path ...

最新文章

  1. 【报错笔记】Navicat连接数据库显示2003错误,无法连接到数据库
  2. 防止抓取html代码,网页中用html代码注释的内容会被抓取吗
  3. vector 结构体排序_指下码上横戈行——排序
  4. html渲染json的插件,[ json editor] 如何在网页中使用Json editor 插件
  5. activiti处理当前用户的任务
  6. React 性能优化技巧总结
  7. 七十三、分发系统介绍、expect脚本远程登录、expect脚本远程执行命令、expect传递参数...
  8. 编写一个c语言源程序输出以下信息,C语言课后习题源程序(5页)-原创力文档...
  9. du-查看文件夹大小-并按大小进行排序
  10. SPSS正在使用的工作文件或变量集中的所有变量不适合此对话框。
  11. 苹果笔记本硬盘怎么解锁_笔记本如何加装内存、硬盘,怎么增大C盘容量
  12. kali Linux 上编译并使用RFID核弹——proxmark3
  13. asp.net WEB 调用 CuteFTP8.0 ftpte.exe 实现大文件上传
  14. 2012-2-25 《数据结构》读书笔记3 栈之迷宫求解
  15. javascript基础知识之三座大山
  16. 装修心得体会(家装团购实战版)
  17. Steam项目推进 (一) ——项目情况简述
  18. 业聚医疗在港交所上市:市值约76亿港元,钱永勋、刘桂祯夫妇控股
  19. 计算机应用基础评价内容,计算机应用基础教学中过程性评价的研究
  20. ABB 120 六轴机械手臂编程调试(一)

热门文章

  1. English 介词
  2. 3D目标检测基础知识
  3. ArcGIS二次开发基础教程(01):打开mxd文件,添加(.shp),(.lyr),(.mdb),(.tif;.img)等多种类型数据
  4. ADS1256在实际应用中遇到的问题总结
  5. 5G 38.300 Rel15 中文版
  6. 统信UOS_arm64开发环境配置
  7. Exception: Gradle install not valid ___APK打包报错
  8. vhd虚拟机安装linux,总算搞定vhd的linux了(包括深度linux),给像我一样的菜鸟总结一下.........
  9. 执行shellcode一直提示illegal instruction
  10. Linux解压zip格式压缩包