Python语言零基础入门——文件

目录

一、文件的基本概念

1.文件

2.绝对路径与相对路径

3.打开文件的模式

二、文件的读取

三、文件的追加

四、文件的写入

五、with语句

六、csv文件

1.csv文件的读取

2.csv文件的写入

七、练习题:实现日记本


一、文件的基本概念

1.文件

  • 文件是以计算机硬盘为载体存储在计算机上的信息集合,文件可以是文本文档、图片、程序等等。计算机文件基本上分为二种:二进制文件(没有统一的字符编码)和纯文本文件(有统一的编码,可以被看做存储在磁盘上的长字符串)。
  • 纯文本文件编码格式常见的有ASCII、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16等。
  • 二进制文件与文本文件的一个最主要的区别在于是否有统一的字符编码格式,二进制文件顾名思义是直接由0与1组成,无统一的字符编码。如图片文件(jpg、png),视频文件(avi)等。

2.绝对路径与相对路径

  • 绝对路径指的是从根目录开始到文件或者文件夹所在位置的完整路径。
  • 相对路径则是相对于当前工作目录来确定文件或者文件夹的位置。

3.打开文件的模式

mode解释
r只读(默认模式,文件必须存在,不存在则抛出异常)
w只写,写之前会清空文件的内容,如果文件不存在,会创建新文件
a追加的方式,在原本内容中继续写,如果文件不存在,则会创建新文件
r+可读可写
w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写
brb、wb、ab、rb+、wb+、ab+意义和上面一样,用于二进制文件操作

二、文件的读取

  • 打开文件→读取文件的内容→关闭文件
import os
# 打开文件#相对路径
# f = open('test.txt',encoding='utf-8')
# f = open('../第9章/test2.txt',encoding='utf-8')
# f = open('../test3.txt',encoding='utf-8')#绝对路径
path = os.getcwd()  # 获取当前py文件的路径
filename = path + '/test.txt'
f = open(filename,encoding='utf-8')# 读取文件
context = f.read()  # 读取全部
# context = f.read(5)  # 读取5个字符
# context = f.readline()  # 读取一行
# context = f.readlines()  # 按行读取并且存入列表
print(context)# 关闭文件
f.close()

运行结果:

你好
我在学习Python
文件

三、文件的追加

  • 打开文件→写入文件→关闭文件
# 打开文件
f = open('test3.txt',mode='a',encoding='utf-8')
# 写入文件
f.write('hello\n')
a = ['a\n','b\n','c\n']
f.writelines(a)
# 关闭文件
f.close()

此时test3.txt内容为:

hello
a
b
c

四、文件的写入

  • 打开文件→写入文件内容→关闭文件
# 打开文件
f = open('test2.txt',mode='w',encoding='utf-8')
# 写入文件内容# f.write('你好,我是-17\n')
# f.write('python\n')# f.writelines(['你好,我是-17\n','正在学习Python'])context = ['你好,我是-17','正在学习Python']
for i in context:f.write(i+'\n')# 关闭文件
f.close()

五、with语句

  • 用来关闭文件的关键字
# 将文件打开并重命名为f
with open('test.txt',mode='r',encoding='utf-8') as f:context = f.read()print(context)

运行结果:

你好,我是-17

六、csv文件

1.csv文件的读取

新建一个data.csv文件,

import csv
with open('data.csv',mode='r',encoding='GBK') as f:cf = csv.reader(f)head = next(cf)scores = []for i in cf:scores.append(int(i[2]))print(sum(scores)/len(scores))

运行结果:

88.5

2.csv文件的写入

import csvwith open('data.csv',mode='w',encoding='GBK') as f:cf = csv.writer(f)cf.writerow(['ll','c','89'])lista = [['la','c','70'],['lb','python','85'],['lc','java','63']]cf.writerows(lista)

运行后,data.csv文件的内容如下:

例:随机生成姓名,科目,成绩等信息

import csv,random
from my_package import my_tools
lista = []
def random_info(n=5):subjects = ['python','java','C++','html']for i in range(n):name = my_tools.random_string(random.randint(3,6))subject = random.choice(subjects)score = random.randint(50,100)lista.append([name,subject,score])def average():with open('data.csv',mode='r',encoding='GBK') as f:cf = csv.reader(f)head = next(cf)scores = []for i in cf:scores.append(int(i[2]))return sum(scores)/len(scores)def make_datas():with open('data.csv',mode='w',encoding='GBK') as f:cf = csv.writer(f)random_info()cf.writerows(lista)make_datas()
result = average()
print('平均分是:',round(result,2))

七、练习题:实现日记本

def write_txt():date = input('请输入今天的日期:')text = input('请输入日记内容:')filename = '日记本.txt'f = open(filename,mode='a',encoding='utf-8')f.write('17rjb\n')f.write(date+'\n')f.write(text + '\n')f.close()return True
def read_txt(day=-1):filename = '日记本.txt'f = open(filename, mode='r', encoding='utf-8')context = f.read()f.close()if day!='-1':lista = context.split('17rjb\n')for i in lista:if i[:10] == day:print(i)return Truereturn Falseelse:context = context.replace('17rjb\n','')print(context)return Truedef quit():print('欢迎下次使用')
def menu():print('*'*30)print('''欢迎使用Python日记本系统1.写日记2.阅读日记0.退出系统''')print('*' * 30)menu()
while True:op = input('请输入你的选择:')if op == '1':if write_txt():print('日记保存成功')elif op == '2':day = input('请输入你要查询的日期(查询全部请输入-1):')if read_txt(day):print('日记加载完毕')else:print('未查询到日记信息,请重试')elif op == '0':quit()breakelse:print('请重新选择')

测试结果:

******************************
欢迎使用Python日记本系统1.写日记2.阅读日记0.退出系统
******************************
请输入你的选择:1
请输入今天的日期:2024.05.02
请输入日记内容:天气晴,心情佳
日记保存成功
请输入你的选择:1
请输入今天的日期:2024.05.03
请输入日记内容:测试0503
日记保存成功
请输入你的选择:1
请输入今天的日期:2024.05.04
请输入日记内容:测试0504
日记保存成功
请输入你的选择:2
请输入你要查询的日期(查询全部请输入-1):2024.05.02
2024.05.02
天气晴,心情佳日记加载完毕
请输入你的选择:2
请输入你要查询的日期(查询全部请输入-1):-12024.05.02
天气晴,心情佳
2024.05.03
测试0503
2024.05.04
测试0504日记加载完毕
请输入你的选择:0
欢迎下次使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/318468.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浏览器安装路径位置的查看、指定网址快捷方式的创建

浏览器安装路径位置的查看、指定网址快捷方式的创建 浏览器安装路径位置的查看 法一、属性查看法 右键点击浏览器的桌面图标,选择“属性”,“快捷方式”页中的“目标”框中可见. 以Microsoft Edge浏览器为例,参见下图: 法二、地…

免费开源语音克隆-GPT-SoVITS-WebUI只需 5 秒的声音样本

语音克隆-GPT-SoVITS-WebUI 强大的少样本语音转换与语音合成Web用户界面。 功能: 零样本文本到语音(TTS): 输入 5 秒的声音样本,即刻体验文本到语音转换。 少样本 TTS: 仅需 1 分钟的训练数据即可微调模型…

LabVIEW换智能仿真三相电能表研制

LabVIEW换智能仿真三相电能表研制 在当前电力工业飞速发展的背景下,确保电能计量的准确性与公正性变得尤为重要。本文提出了一种基于LabVIEW和单片机技术,具有灵活状态切换功能的智能仿真三相电能表,旨在通过技术创新提高电能计量人员的培训…

基于SpringBoot+Vue的旅游网站系统

初衷 在后台收到很多私信是咨询毕业设计怎么做的?有没有好的毕业设计参考?能感觉到现在的毕业生和当时的我有着同样的问题,但是当时的我没有被骗,因为现在很多人是被骗的,还没有出学校还是社会经验少,容易相信别人。…

项目管理-项目进度管理2/3

项目管理:每天进步一点点~ 活到老,学到老 ヾ(◍∇◍)ノ゙ 何时学习都不晚,加油 项目进度管理:需掌握 ITTO, 搞懂计算图,问题和解决方案。 项目进度管理6个过程,包括(口…

机器学习:深入解析SVM的核心概念【二、对偶问题】

对偶问题 **问题一:什么叫做凸二次优化问题?而且为什么符合凸二次优化问题?**为什么约束条件也是凸的半空间(Half-Space)凸集(Convex Set)半空间是凸集的例子SVM 约束定义的半空间总结 **问题二…

nginx的前世今生(二)

书接上回: 上回书说到,nginx的前世今生,这回我们继续说 3.缓冲秘籍,洪流控水 Nginx的缓冲区是其处理数据传输和提高性能的关键设计之一,主要用于暂存和管理进出的数据流,以应对不同组件间速度不匹配的问题…

Dokcer容器分布式搭建LNMP+wordpress论坛

目录 引言 一、架构环境 二、搭建容器 (一)自定义网络 (二)搭建nginx容器 1.文件准备 2.查看与编辑文件 3.生成镜像 4.创建容器 (三)搭建MySQL容器 1.文件准备 2.查看与编辑文件 3.生成镜像 …

基于Unity+Vue通信交互的WebGL项目实践

unity-webgl 是无法直接向vue项目进行通信的,需要一个中间者 jslib 文件 jslib当作中间者,unity与它通信,前端也与它通信,在此基础上三者之间进行了通信对接 看过很多例子:介绍的都不是很详细,不如自己写&…

【银角大王——Django课程——用户表的基本操作】

Django课程——用户表的基本操作 模板的继承用户管理用户列表展示新建用户Django组件原始方法【麻烦,太原始】form组件modelform组件 使用modelsform组件编写添加页面 模板的继承 (1)先写一个页面模板————这个案例中的模板基本上就是一个…

分布式与一致性协议之CAP和Paxos算法(一)

CAP 理论 如何使用BASE理论 以InfluxDB系统中DATA节点的集群实现为例。DATA节点的核心功能是读和写,所以基本可用是指读和写的基本可用。我们可以通过分片和多副本实现读和写的基本可用。也就是说,将同一业务的数据先分片,再以多份副本的形…

嫦娥六号发射任务圆满成功,开启月球背面采样返回之旅 | 最新快讯

央视新闻5月3日消息,据国家航天局,5月3日17时27分,嫦娥六号探测器由长征五号遥八运载火箭在中国文昌航天发射场成功发射,准确进入地月转移轨道,发射任务取得圆满成功。嫦娥六号探测器开启世界首次月球背面采样返回之旅…

光固化打印--问题记录

平面翘起 原因:角度平,缺支持 解决: 45度角度摆放底部平面起皮 原因:缺少支撑,原始结构支持无法支撑平面。 解决:增加支撑

2024 会声会影转场区间如何设置 会声会影电影片头怎么做

视频转场是视频剪辑中重要的技巧之一,合理运用转场效果可以提升视频的质量和观赏性。这篇文章就一起来学习一 下会声会影转场区间默认几秒,会声会影转场区间如何设置。 一、会声会影转场区间默认几秒 会声会影转场区间默认1秒。1秒的转场区间可以使场景…

nuxt3项目服务端bulid后在本地浏览的3种方式(nuxi preview、Node.js Server、PM2)

你也许会问有了开发调试本地浏览,为什么还要服务端构建之后在本地浏览? 举个简单例子 在 Nuxt 3 服务端打包中,由于运行环境不同,无法直接访问 process 对象。服务端打包通常是在 Node.js 环境中进行的,而 process 对象…

【云原生】Docker 实践(一):在 Docker 中部署第一个应用

Docker 实践(一):在 Docker 中部署第一个应用 1.使用 YUM 方式安装 Docker2.验证 Docker 环境3.在 Docker 中部署第一个应用3.1 小插曲:docker pull 报 missing signature key 错误3.2 重新安装 Nginx 1.使用 YUM 方式安装 Docker…

微信小程序+esp8266温湿度读取

本文主要使用微信小程序显示ESP8266读取的温湿度并通过微信小程序控制LED灯。小程序界面如下图所示 原理讲解 esp8266 通过mqtt发布消息,微信小程序通过mqtt 订阅消息,小程序订阅后,就可以实时收到esp8266 传输来的消息。 个人可免费注册五个微信小程序账号,在微信小程序官…

基于java,SpringBoot和VUE的求职招聘简历管理系统设计

摘要 基于Java, Spring Boot和Vue的求职招聘管理系统是一个为了简化求职者与雇主间互动流程而设计的现代化在线平台。该系统后端采用Spring Boot框架,以便快速搭建具有自动配置、安全性和事务管理等特性的RESTful API服务,而前端则使用Vue.js框架构建动…

2024最新docker部署gitlab

docker部署gitlab 快速命令 1 拉取镜像 docker pull gitlab/gitlab-ce2 启动容器 docker run -itd \-p 9980:80 \-p 9922:22 \-v /opt/soft/docker/gitlab/etc:/etc/gitlab \-v /opt/soft/docker/gitlab/log:/var/log/gitlab \-v /opt/soft/docker/gitlab/opt:/var/opt/g…

【C语言实现贪吃蛇】(内含源码)

前言:首先在实现贪吃蛇小游戏之前,我们要先了解Win32 API的有关知识 1.Win32 API Windows这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外,它同时也是一个很大的服务中心,调佣这个中心的各种服务(每一…