前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python_文件的打开和关闭

python_文件的打开和关闭

作者头像
Mirror王宇阳
发布于 2020-11-10 14:07:09
发布于 2020-11-10 14:07:09
1.6K00
代码可运行
举报
运行总次数:0
代码可运行

文件对象 = open('文件名','使用方式') rt:读取一个txt文件 wt: 只写打开一个txt文件,(如果没有该文件则新建该文件)会覆盖原有内容 at:打开一个txt文件,并从文件指针位置追加写内容(文件指针默认在末尾) 文件操作错误属于:I/O异常 通常的异常:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 try:
2     f = open('a.txt','wt')
3 except Exception as e:
4     print(e)

#文件的写操作 # 函数: 文件对象.write(s)其中s是待写入文件的字符串{文件对象需要时可写入的对象}

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 try:
2     fobj = open('anc.txt','wt')     #wt:可写入操作方式/at为在原有的文件内容追加写入
3     fobj.write('\nmore')    #写函数
4     fobj.close()
5 
6 except Exception as err:
7     print(err)
8 
9 #结果:anc文件保存至当前目录下,并写入“[换行]more”

#案例:学生信息储存

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 name = 'wanzi'
 2 gender = '男'
 3 age = 23
 4 try:
 5     f = open('students.txt','wt')
 6     while True:
 7         #s = Student(i)
 8         #if s:
 9         f.write("namegenderge")
10         ans = input("continue(Y/y):")
11         if ans != 'Y' and ans != 'y':
12             break
13         i = i+1
14     f.close()
15 
16 except Exception as e:
17     print(e)

#读文件操作 文件对象.read(n) //返回全部字符串或者n字节字符

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 def writeFile():    #写文件操作
 2     f = open('abc.txt','wt')
 3     f.write("Hello world\nI am Code_boy\nMirror_")  #三行数据(两个\n)
 4     f.close()
 5 
 6 def readFile():     #读文件操作
 7     f = open('abc.txt','rt')
 8     sread = f.read()    #文件内容读取 [如果read(n)有值,则读取n个字符,为空则读取全部]
 9     print(sread)    #将读取的内容打印输出
10     f.close()
11 
12 try:
13     writeFile() #调用写文件函数,写入文件
14     readFile()  #调用读文件函数,读出(打印)文件内容
15 except Exception as e:
16     print(e)
17 
18 '''
19 结果:
20 Hello world
21 I am Code_boy
22 Mirror_
23 '''

#读文件操作 文件对象.readline() //返回一行字符串(读取连续的字符串,遇到\n或文件末尾结束)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 def writeFile():
 2     f = open('readline.txt','wt')
 3     f.write('Hello\nworld')
 4     f.close()
 5 
 6 def readlineFile():
 7     f = open('readline.txt','rt')
 8     sreadline = f.readline()    #读取readline文件(只读一行)
 9     print(sreadline,'len=',len(sreadline))
10     sreadline = f.readline()
11     print(sreadline, 'len=', len(sreadline))
12     sreadline = f.readline()
13     print(sreadline, 'len=', len(sreadline))
14     
15     f.close()
16 try:
17     writeFile()
18     readlineFile()
19 except Exception as e:
20     print(e)
21 
22 结果:
23 Hello           #readline中的文件内容: Hello\nworld 结合readline的功能,在读取一行的数据
24  len= 6         # ‘Hello\n’ >>>> 共计6个字节(换行是因为读取了\n)
25 world len= 5    #如上类说明
26  len= 0         #文件指针已到达末尾,无法继续读出数据故 len = 0

# .readline()可以使用循环的方式(判断是否读取为空)来读取全部,一般都是使用读单行内容 #但是! .readlines(){加了一个‘s'}就可以直接读取全部数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 def writeFile():
 2     f = open('readline.txt','wt')
 3     f.write('Hello\nworld')
 4     f.close()
 5 
 6 def readlinesFile():
 7     f = open('readline.txt','rt')
 8     sreadlines = f.readlines()    #读取readlines文件(读全部行)并以list形式返回
 9     #因为是以列表格式返回,所以一般情况下会配合循环(for)从readlines()提取每一行循环打印输出
10     for i in range(len(sreadlines)):        #1号:利用for输出
11         print(sreadlines[i],end='')
12 
13     print(sreadlines)   #读全部内容,并且每一行用'\n'(显示)隔开    #2号:直接输出
14     f.close()
15 
16 try:
17     writeFile()
18     readlinesFile()
19 except Exception as error:
20     print(error)
21 '''
22 1号结果:
23 Hello
24 world
25    2号结果:
26 ['Hello\n', 'world']        #>>>也就是readlinese()读取数据的储存(list)形式
27 '''

#读取文件中的学生信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 f = open('student1.txt','rt')
 2 while True:
 3 
 4     name = f.readline().strip('\n')# *.strip()>>用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
 5     if name == '':
 6         break
 7     gender = f.readline().strip('\n')
 8     age = f.readline().strip('\n')
 9 f.close()
10 print(name,gender,age)

#文件编码 #GBK编码:中文字符包含简体和繁体字符,每个字符仅能存储简体中文字符 汉字占二字节 #*UTF-8编码:全球通用的编码(默认使用)汉字占三字节 #文件打开时,可以指定用encoding参数指定编码例如: # f = open('x.txt','wt',encoding = 'utf-8') # 文件编码直接决定了文件的空间大小

#案例:UTF-8文件编码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 def writeFile():
 2     f = open('utf.txt','wt',encoding = 'utf-8')
 3     f.write('Hello I am 王宇阳')
 4     f.close()
 5 
 6 def readFile():
 7     f = open('utf.txt','rt',encoding='utf-8')
 8     sreadlines = f.readlines()
 9     for i in sreadlines:
10         print(i)
11     f.close()
12 try:
13     writeFile()
14     readFile()
15 except Exception as error:
16     print(error)
17 
18 # 结果:   Hello I am 王宇阳

#文件指针(文件结束标志:EOF)...文件对象.tell()[返回一个整数,整数则是指针的位置]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 f = open('zz.txt','wt',encoding='utf-8')
 2 print(f.tell())     #指针位置:0
 3 f.write('abcdef 你好')
 4 print(f.tell())     #指针位置:13
 5 f.close()
 6 f = open('zz.txt','rt',encoding='utf-8')
 7 f.tell()   #文件指针归零
 8 s = f.read(3)
 9 print(s,f.tell())   #输出read读取内容并返回指针位置。读取大小和指针位置相符
10 f.close()
11 #结果:
12 0
13 13
14 abc 3

#操作指针...文件对象.seek(offset[,whence]) # offset:开始的偏移量,代表着需要偏移的字节数 # whence:[可选]默认值为‘0’,给offset参数一个定义,表示从那个位置开始偏移,0:文件开头 1:文件当前位置 2:文件末尾 #----注意,只有 “rt+ wt+ at+” 的打开方式可以调整指针,其他的打开方式不支持指针操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 def writeFile():
 2     f = open('zz1.txt','wt+',encoding='utf-8')
 3     print(f.tell())         #返回初始指针位置 >>> 0
 4     f.write('123')          #写入3字节内容
 5     print(f.tell())         #返回当前(写入文件后的)指针位置
 6     f.seek(2,0)             #指针从开头位置偏移2字节即:1 2 . 3(点的位置)
 7     print(f.tell())         #返回指针位置>>>2
 8     f.write('abc')          #从当前指针位置写入‘abc’(覆盖了‘3’)
 9     print(f.tell())         #返回指针位置>>>5
10     f.close()
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 def readFlie():
 2     f = open('zz1.txt','rt+',encoding='utf-8')
 3     r = f.read()
 4     print(r)
 5     f.close()
 6 
 7 writeFile()
 8 readFlie()
 9 #结果:
10 0
11 3
12 2
13 5
14 12abc
15 '''

#二进制文件 #打开方式:rb wb ab rb+ wb+ ab+ ''' 实践中总结: 1' list内容写入文件在需要专成str格式,应为列表格式文件不接受或者采用 (f.a) 的样式;(案例综合:教材管理95-101行)


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-11-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【数据结构】您有一份KMP算法教学已到账,请注意查收!!!
在上一篇内容中,我们详细介绍了朴素模式匹配算法及其实现。朴素模式匹配算法简单的理解就是将主串中以每一个位序上的元素为开头的子串与模式串进行匹配,直到匹配成功,或者匹配完主串中的所有可能的子串。
蒙奇D索隆
2024/09/07
1160
【数据结构】您有一份KMP算法教学已到账,请注意查收!!!
数据结构_KMP算法
在此处,失配了,所以要进行回溯,i的初始位置变成第二个元素位置,j的初始位置变成第一个元素位置,再进行匹配
用户10551528
2023/05/09
2180
数据结构_KMP算法
【算法】BF、KMP算法及OJ题
什么是BF算法❓ BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。 对于BF算法而言,如果匹配到不相等的,则模式串T要回到第一个字符。而KMP则会通过next数组回退到特定的位置。后面会展开说明。
平凡的人1
2022/11/15
5850
【算法】BF、KMP算法及OJ题
【数据结构】串代码实现
目录 串 串_String.c #include "string.h" #include "stdio.h" #include "stdlib.h" #include "math.h" #include "time.h" #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 40 /* 存储空间初始分配量 */ typedef int Status; /* Status是函数的类型,
CtrlX
2022/11/18
4410
数据结构实验之数组三:快速转置(SDUT 3347)
转置运算是一种最简单的矩阵运算,对于一个m*n的矩阵M( 1 = < m < = 10000,1 = < n < = 10000 ),它的转置矩阵T是一个n*m的矩阵,且T( i , j )=M( j , i )。显然,一个稀疏矩阵的转置仍然是稀疏矩阵。你的任务是对给定一个m*n的稀疏矩阵( m , n < = 10000 ),求该矩阵的转置矩阵并输出。矩阵M和转置后的矩阵T如下图示例所示。
Lokinli
2023/03/09
4170
数据结构实验之数组三:快速转置(SDUT 3347)
2024重生之回溯数据结构与算法系列学习(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
假设有串 T = '', S = 'iPhone 14 Pro Max?', W = 'Pro'
盛透侧视攻城狮
2024/10/22
910
2024重生之回溯数据结构与算法系列学习(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构(6):串(下)
子串的定位操作通常称为串的模式匹配,它求的是子串(常称模式串)在主串中的位置。下面给出一种不依赖于其他串操作的暴力匹配算法。
不可言诉的深渊
2021/07/01
5620
【数据结构】串与数组
文章目录 4. 串与数组 4.1 串概述 4.2 串的存储 4.3 顺序串 4.3.1 算法:基本功能 4.3.2 算法:扩容 4.3.3 算法:求子串 4.3.4 算法:插入 4.3.5 算法:删除 4.3.6 算法:比较 4.4 模式匹配【难点】 4.4.1 概述 4.4.2 Brute-Force算法:分析 4.4.3 Brute-Force算法:算法实现 4.4.4 KMP算法:动态演示 4.4.5 KMP算法:求公共前后缀 next数组 -- 推导 4.4.6 KMP算法:求公共前后缀 next数
陶然同学
2023/02/26
4K0
【数据结构】串与数组
《王道》数据结构笔记整理2022级_数据结构笔记整理
1.数据:数据是信息的载体,是描述客观事物属性的数、字符以及所有能输入到计算机中并被程序识别和处理的符号的集合。
全栈程序员站长
2022/09/22
3.1K0
《王道》数据结构笔记整理2022级_数据结构笔记整理
数据结构第四次实验 矩阵快速转置与矩阵加法
#include <bits/stdc++.h> using namespace std; struct xyz { int i,j; int v; }Triple; struct xsjz{ // 存储系数矩阵 xyz data[100]; int mu,nu,tu; }TsMatrix; int oder[10][3] = {{1,2,12},{1,3,9},{3,1,-3},{3,6,14},{4,3,24},{5,2,18},{6,1,15},{6,4,-7},{7,2,
用户2965768
2018/12/24
5030
数据结构试题库答案算法设计题
算法设计题(10分) (1)阅读下列递归算法,写出非递归方法实现相同功能的C程序。 void test(int &sum) { int x; scanf(x); if(x=0) sum=0 el
企鹅号小编
2018/01/09
1.5K0
数据结构试题库答案算法设计题
【数据结构】这里有一份KMP算法优化的详细攻略,不要错过哦!!!
在上一篇内容中我们详细介绍了KMP算法的基础知识点,相信大家在阅读完后应该对前缀、后缀、PM值、next数组这些基本概念有了一个初步的了解。但是在上一篇内容中我们对KMP算法的介绍还不够完整,遗留下来了两个问题:
蒙奇D索隆
2024/09/07
1380
【数据结构】这里有一份KMP算法优化的详细攻略,不要错过哦!!!
你所不知道的 KMP 冷知识
KMP算法由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。
ACM算法日常
2021/08/10
8780
漫画:什么是KMP算法?
在字符串匹配算法的前两讲,我们分别介绍了暴力算法BF算法,利用哈希值进行比较的RK算法,以及尽量减少比较次数的BM算法。
博文视点Broadview
2020/06/12
3920
漫画:什么是KMP算法?
重学数据结构(五、串)
串(string)(或字符串)是由零个或多个字符组成的有限序列,其中每个字符都来自某个字符表( Alphabet) Σ,比如 ASCII 字符集或 Unicode 字符集。 一般记为:
三分恶
2020/09/18
6490
一文帮你搞懂 | 串的模式匹配-朴素匹配和KMP算法及优化
 我们看看当我进行完前面的操作后,是否需要继续重i = 2, j = 1开始看起呢
莫浅子
2022/11/18
6680
一文帮你搞懂 | 串的模式匹配-朴素匹配和KMP算法及优化
数据结构——全篇1.1万字保姆级吃透串与数组(超详细)
 行序:使用内存中一维空间(一片连续的存储空间),以行的方式存放二维数组。先存放第一行,在存放第二行,依次类推存放所有行。
陶然同学
2023/02/27
1.9K0
数据结构——全篇1.1万字保姆级吃透串与数组(超详细)
KMP算法
一个文本串$S$(主串)和一个模式串$P$,求$P$在$S$中出现的位置,或者$P$在$S$中出现的次数,等等问题。
xiaohejun
2020/02/18
5290
稀疏矩阵转置多种算法详解
这次博文写的有点长,因为我得构思,所以今天晚上(11.10)写一点,另外还有个重要的任务,因为再过40分钟就是剁手节了,过了今晚我不止是一个光棍,更是一个穷光棍、、、、我该怎么办。。。求拦截。
全栈程序员站长
2022/06/25
1.4K0
稀疏矩阵转置多种算法详解
【算法】----BF算法&KMP算法
打开我们浏览器的搜索框,输入你想的这个词,然后点击Enter。浏览器就会自动搜索与该词匹配的内容。
Skrrapper
2024/06/18
1200
【算法】----BF算法&KMP算法
推荐阅读
相关推荐
【数据结构】您有一份KMP算法教学已到账,请注意查收!!!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验