python(20)之读写文件

目录

读写文件

1.简单介绍

2.从文件中读取单行数据

3.从文件中读取多行

4.把 string(字符串) 的内容写入文件

5.写入其他类型的对象

本节知识总结

mode 参数

file 对象


读写文件

1.简单介绍

最常用的参数有两个: open(filename, mode)
f = open('workfile', 'w')
第一个实参是文件名,字符串类型;第二个实参是包含描述文件使用方式字符的字符串。

mode 的值包括 'r' ,表示文件只能读取;'w' 表示只能写入(现有同名文件会被覆盖); 'a' 表示打开文件并追加内容,任何写入的数据会自动添加到文件末尾。'r+' 表示打开文件进行读写。 mode 实参是可选的,省略时的默认值为 'r'

with open('workfile') as f:data = f.read()print(data)
#f.close()
#如果没有使用 with 关键字,则应调用 f.close() 关闭文件,即可释放文件占用的系统资源。

如果需定义编码形式,应加入encoding 常用的有utf8和gbk

with open('路径或文件名',encoding='utf-8') as f:data = f.read()print(data)
#f.close()

2.从文件中读取单行数据

本次所用函数为  readline()

with open('路径或文件名') as f:a=f.readline() #读取第1行b=f.readline() #读取第2行c=f.readline() #读取第3行print(a,b,c) #输出结果for i in f: #遍历f中的所有行print(i)
f.close()

3.从文件中读取多行

with open('路径或文件名') as f:for line in f:print(line, end='')
f.close()

或者调用 readlines() 函数,当然在这里不用,如果用open读取txt文件时可以用它

with open(r'D:\桌面\aa.txt',encoding='utf-8') as f:lines = f.readlines()for line in lines:print(line)
f.close()

4.把 string(字符串) 的内容写入文件

with open('路径+文件名','w') as f:f.write('想写的内容')
f.close()

举个例子:

with open(r'D:\桌面\a.txt','w') as f:f.write('This is a test\n') 加\n是输入一句话后自动回车
f.close()

返回:

 5.写入其他类型的对象

写入其他类型的对象前,要先把它们转化为字符串(文本模式)或字节对象(二进制模式)
with open(r'D:\桌面\a.txt','a') as f:value = ('the answer', 42)s = str(value) #转换为字符串类型f.write(s)
f.close()

返回:

 然后我们也看一下二进制的写入方式

f = open(r'D:\桌面\a.txt', 'rb+')
f.write(b'0123456789abcdef') #转换
print(f.read())
print(f.seek(5))
print(f.read(1))

返回:

 本节知识总结

mode 参数

模式描述
t文本模式 (默认)。
x写模式,新建一个文件,如果该文件已存在则会报错。
b二进制模式。
+打开一个文件进行更新(可读可写)。
U通用换行模式(不推荐)。
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

默认为文本模式,如果要以二进制模式打开,加上 b 。

file 对象

file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:

序号方法及描述
1

file.close()

关闭文件。关闭后文件不能再进行读写操作。

2

file.flush()

刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。

3

file.fileno()

返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。

4

file.isatty()

如果文件连接到一个终端设备返回 True,否则返回 False。

5

file.next()

返回文件下一行。

6

file.read([size])

从文件读取指定的字节数,如果未给定或为负则读取所有。

7

file.readline([size])

读取整行,包括 "\n" 字符。

8

file.readlines([sizeint])

读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。

9

file.seek(offset[, whence])

设置文件当前位置

10

file.tell()

返回文件当前位置。

11

file.truncate([size])

截取文件,截取的字节通过size指定,默认为当前文件位置。

12

file.write(str)

将字符串写入文件,返回的是写入的字符长度。

13

file.writelines(sequence)

向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

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

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

相关文章

C语言全局变量和局部变量深入

局部变量 定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错。 示例 int f1(int a){int b,c; //a,b,c仅在函数f1()内有效return abc; } int ma…

python实例之 67,68

目录 67.题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 68.题目:有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数 今天这个不知道…

C语言块级变量

代码块,就是由{ }包围起来的代码。代码块在C语言中随处可见,例如函数体、选择结构、循环结构等。不包含代码块的C语言程序根本不能运行,即使最简单的C语言程序也要包含代码块。 C语言允许在代码块内部定义变量,这样的变量具有块级…

python实例 69,70

69.题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 先看一下第一种实现方式 nmax 50 n int(input(请输入总人数:)) num [] f…

C语言递归调用

一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层,当最内层的函数执行完毕后,再一层一层地由里到外退出。 递归函数不是C语言的专利,Java…

python实例 71,72

目录 71.编写input()和output()函数输入,输出5个学生的数据记录。 72.题目:创建一个列表。 71.编写input()和output()函数输入,输出5个学生的数据记录。 #71 N 3 #stu # num : string # name : string # score[4]: list student [] for i…

Dev-C++ 常用快捷键大全

最近开始用Dev-C在Window下编程,感觉Dec-C是一款挺不错的C编译器。我总结了一些使用技巧。 Dev-C 的一些常用快捷键 恢复 CtrlZ 重做 CtrlY 剪切 CtrlX 拷贝 CtrlC 粘贴 CtrlV 搜索替换内容 CtrlF 选择全部 CtrlA 编译 F9 运行 F10 编译运行 F11 设置注释 Ctrl/…

python实例 73,74

目录 73.题目:反向输出一个链表。 74.题目:列表排序及连接。 73.题目:反向输出一个链表。 #73 ptr [] for i in range(5):num int(input(请输入一个数字:))ptr.append(num) print (输入原顺序列表,ptr) ptr.reverse() print (输入反顺序…

C语言简单计算器

用C语言实现简单的计算器功能。 简单计算器,实现简单的加减乘除功能,选择对应的运算符输出运算符对应的编号,然后输入我们要计算的两个数,程序会给出计算结果。 效果演示 简单计算器代码 /* 简单计算器 name:zsh */ #include…

python实例 75,76

目录 75.判断情人节 76. 题目:编写一个函数,输入n为偶数时,调用函数求1/21/4...1/n,当输入n为奇数时,调用函数1/11/3...1/n 75.判断情人节 #75 import timeif __name____main__:datetime.strftime(%m-%d,time.localtime())if d…

python实例 77,78

目录 77.题目:循环输出列表 78.找到年龄最大的人,并输出。 77.题目:循环输出列表 #77 s ["man","woman","girl","boy","sister"] for i in s:print(i) 返回: 或者是 s …

python实例 79,80

目录 79.字符串排序 80.猴子分桃 79.字符串排序 #79 list1[] str1input(请输入第一个字符串:) str2input(请输入第二个字符串:) str3input(请输入第三个字符串:) list1.extend([str1,str2,str3]) list1.sort() print (排序后的字符串为&am…

C语言带参数的宏定义

C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。 对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。 带参宏定义的一般形式为&#xff1a…

python实例 81,82

目录 81.题目:809*??800*??9*?? 其中??代表的两位数, 809*??为四位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。 82.题目:八进制转换为十进制 81.题目&#xf…

C语言带参宏定义和函数的区别

带参数的宏和函数区别: 宏展开仅仅是字符串的替换,不会对表达式进行计算;宏在编译之前就被处理掉了,它没有机会参与编译,也不会占用内存。而函数是一段可以重复使用的代码,会被编译,会给它分配内…

python实例 83,84

目录 83.题目:求0—7所能组成的奇数个数。 84.题目:连接字符串 83.题目:求0—7所能组成的奇数个数。 程序分析: 组成1位数是4个。 组成2位数是7*4个。 组成3位数是7*8*4个。 组成4位数是7*8*8*4个。 ...... #83 sum 0 …

C语言条件编译详解

我们要开发一个C语言程序,让它输出红色的文字,并且要求跨平台,在 Windows 和 Linux 下都能运行,怎么办呢? 这个程序的难点在于,不同平台下控制文字颜色的代码不一样,我们必须要能够识别出不同的…

python实例 85,86

目录 85.题目:输入一个奇数,然后判断最少几个 9 除于该数的结果为整数 86.题目:两个字符串连接程序 85.题目:输入一个奇数,然后判断最少几个 9 除于该数的结果为整数 程序分析:999999 / 13 76923 #85 a…

Python安装与环境变量的配置

Python安装与环境变量的配置 python下载: Python安装包下载地址 1 . 选择Windows系统的 2 . 选择相应的32/64位版本点击下载 python安装: 1 . 下载完成后,使用管理员身份进行安装 注意,勾选“Add Python 3.6 to PATH”选项…

python实例 87,88

目录 87.题目:回答结果(结构体变量传递) 88.题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的* 87.题目:回答结果(结构体变量…