Python学习之路(四):基础知识之文件操作

1.文件操作的函数

文件操作的函数大致为:f = open(文件名(路径), mode = "?", encoding="字符集")

  • f 可写成任意变量等,它被称作:文件句柄,文件操作符,或者文件操作对象
  • 其中文件的路径有两种:
  1. 绝对路径,从磁盘的根目录寻找路径,或者从互联网上找路径
  2. 相对路径(相对于当前程序所在的文件夹),在同一个文件夹互相访问,如下面的例子
  • 文件操作的encoding应该是utf-8,这是因为在Python中默认编码为utf-8。

2.mode:文件操作的模式

打开文件的方式:

  • r,w,a
  • r+,w+,a+
  • rb,wb,ab
  • r+b,w+b,a+b

2.1 r模式:只读模式

1 f = open(‘什么.txt‘, mode=‘r‘, encoding=‘utf-8‘)  # 文件的路径为同一文件夹中的文件,要查询外层文件夹应该在路径前加../
2 s = f.read()
3 print(s)
4 f.close()  # r模式下只读取到文件内容

1.readline()

readline()表示的是在读取目标文件时只读取文件中的一行,当文件比较庞大时,这时候想要读取文件中的内容,如果 全部读取就会占用时间和内存,不妨先读取一两行来看看是什么内容。

 1 f = open("../day06/day07/01作业.py", mode="r", encoding="utf-8")
 2 s = f.readline()  # 一次读一行
 3 print(s, end="\n")  # 在打印的末尾默认有一个换行,所以每打印一行,就会有一行空格
 4 s = f.readline()  # 一次读一行
 5 print(s)
 6 s = f.readline()  # 一次读一行
 7 print(s)
 8 s = f.readline().strip()  # 可以去掉打印后面的空白
 9 print(s)
10 s = f.readline()  # 一次读一行
11 print(s)
12 s = f.readline()  # 一次读一行
13 print(s)
14 f.close()

readline()可以实现类似文件监听的效果

1 f = open("马刺/马刺球员", mode="r", encoding="utf-8")
2 while 1:
3     s = f.readline().strip()
4     if s!= "":
5         print("内容是", s)
6 f.close()

也可以用for循环一行行地处理文件

1 f = open("马刺/马刺球员", mode="r", encoding="utf-8")
2 for line in f:  # 一行一行地处理文件
3     print(line)
4 f.close()

2.2 w模式

w模式是写模式,即向目标文件中写入部分内容,w模式下,如果你所操作的文件路径下的文件不存在,会自动创建相关文件,但是w模式下每写入内容一次,文件内以前所保存的内容就会被清空。

1 f = open("马刺/马刺球员", mode="w", encoding="utf-8")
2 f.write("于是民意\n")
3 f.write("益康密集")  # 可以用\n写入多行,\n代表换行
4 f.flush()
5 f.close()

值得注意的是,在w模式下是不能执行read操作的。

2.3 a模式

a模式即追加模式,不论文件中光标处于何种位置,都是在文件末尾写入部分内容。

1 f = open("马刺/马刺球员", mode="a", encoding="utf-8")
2 f.write("于是民意\n")
3 f.write("益康密集")  # 可以用\n写入多行
4 f.flush()
5 f.close()

2.4 rb/wb/ab

rb, wb, ab, 用于处理非文本文档,比如图片等,读取的不是文件的内容,而是读取byte形式.可以用于上传文件,且encoding不赋值

1 f = open("C:\\pdd.jpg", mode="rb")  # 此时encoding不赋值
2 e = open("D:\\pdd.jpg", mode="wb")  # 在python中\表示转义,两个\\表示一个3 for line in f:
4     e.write(line)  # 此处line不一定只读取一行,不知道读取多少,但是读取的数据是完整的
5 f.close()  # 并且在写入的时候在文件内容的末尾写入
6 e.flush()
7 e.close()

2.5 r+

r+模式代表读写模式,默认顺序为先读后写

1 f = open("马刺/马刺球员", mode="r+", encoding="utf-8")
2 f.write(‘葫芦娃‘)  # 虽然r+模式在写入的时候在文件内容的末尾写入,但如果在一开始就写入,便会根据光标写入
3 s = f.read()  # 读取时只会读到写入内容后的文件内容
4 print(s)
5 f.close()

在r+模式下. 如果读取了内容. 不论读取内容多少. 光标显示的是多少. 再写入或者操作文件的时候都是在结尾进行的操作.

2.6 w+模式

1 f = open("马刺/马刺球员", mode="w+", encoding="utf-8")
2 f.write(‘葫芦娃舅爷爷‘)
3 f.seek(0)
4 s = f.read()
5 print(‘俺输入的内容是:‘, s)
6 f.flush()
7 f.close()

w+模式下,依然会将文件原来的内容清空,所以用的很少。

2.7 a+模式

1 f = open("马刺/马刺球员", mode="a+", encoding="utf-8")
2 f.write(‘葫芦娃舅爷爷‘)  # a+在文档末尾追加内容,但是读取的时候需要将光标移动到文档头部进行读取,否则光标在末尾,读取不到文档内容
3 f.seek(0)
4 s = f.read()
5 print(‘俺输入的内容是:‘, s)
6 f.flush()
7 f.close()

3. 光标操作

  • seek(偏移量, 位置) 0:开头; 1:中间; 2:末尾seek(0,2) # 在末尾的偏移量是0
  • tell() 告诉光标现在在哪里
  • truncate() 截断文件

3.1 seek

1 f = open("马刺/马刺球员", mode="r", encoding="utf-8")
2 for line in f:
3     print(line.strip())  # 连续读取文件在之前要将光标移动到文档开头
4 f.seek(0)
5 for line in f:
6     print(line.strip())
7 f.close()
1 f = open("马刺/马刺球员", mode="r", encoding="utf-8")
2 f.seek(3)  # 在开头移动3个byte,3byte对应一个中文
3 s = f.read(1)  # 读取一个字符
4 print(s)
5 f.close()

3.2 tell

1 f = open("马刺/马刺球员", mode="w", encoding="utf-8")
2 f.write(‘谁的青春不迷茫‘)  # 在开头移动3个byte,3byte对应一个中文
3 f.seek(9)  # 读取一个字符
4 print(f.tell())

3.3 truncate

从文件开头截断到光标位置

如果给参数,从头截尾到参数位置

1 f = open("马刺/马刺球员", mode="w", encoding="utf-8")
2 f.write("哈达迪") # 写入三个字符
3 f.seek(3) # 光标移动到3, 也就是第一个字末尾
4 f.truncate() # 删掉光标后面的所有内容
5 f.close()

原文地址:https://www.cnblogs.com/Studying-Du/p/12349191.html

时间: 2024-10-28 08:17:06

Python学习之路(四):基础知识之文件操作的相关文章

Python学习之路-Day1-Python基础

Python学习之路第一天 学习内容: 1.Python简介 2.安装 3.第一个Python程序 4.变量 5.字符编码 6.用户输入 7.表达式if..else语句 8.表达式for语句 9.break和continue 10.while循环 11.字符串格式化 1.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOB

PYTHON学习之路_PYTHON基础(3)

学习内容: 1.Python集合 2.Python文件操作 3.Python字符编码 4.Python函数介绍 一.Python集合 1)集合的创建: list_1 = [1,3,5,7,26,8,65]list_1=set(list_1) list_2 =set([2,4,5,6,7,9,65]) print (list_1,list_2) 2)集合间的操作: print ("交集:", list_1.intersection(list_2)) #交集print("并集&q

python学习之路(基础篇)——基本语法流程控制

一.hello world程序 1. 在linux 下创建一个文件叫hello.py,并输入 print("Hello World!") 然后执行命令:python hello.py ,输出 localhost:~ jieli$ vim hello.py localhost:~ jieli$ python hello.py Hello World! 2.由 python 解释器来执行 #!/usr/bin/env python print "hello,world"

python学习笔记(集合的使用、文件操作、字符编码与转码、函数)

集合 集合(set):把不同的元素组成一起形成集合,是python基本的数据类型. 集合元素(set elements):组成集合的成员 为什么需要集合? 集合的作用 1 .列表去重复数据 按照现有知识的解决思路:先设置空列表,然后使用for寻获,把需要去重的列表的第一个数据放到新列表中,然后依次取出第二个数据,把第二个数据和第一个数据作比较,如果不一样,则存入新列表中:以此类推,每取一次都要和新列表中的数据作对比,不一样的则添加入新列表中. 2. 关系测试 比如有学员同时报了python班和l

python学习之路_python基础(1)

学习内容: 1.python介绍 2.python程序初接触和变量 3.python用户交互 4.python数据类型 5.python循环if...(elif)...else 6.python循环while...else 7.python循环for...else 8.python循环中断break和continue 一.python介绍 1)python优缺点 先看优点: Python的定位是“优雅”.“明确”.“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容

python学习之路(基础篇)——python入门

一.python是一门编程语言,作为学习python的开始,需要事先搞明白:编程的目的是什么?什么是编程语言?什么是编程? 编程的目的:将人的思想转换成机器能理解的语言,利用机器的优势扩大个人的能力,实现更广阔的目标. 编程语言   : 能够被计算机所理解的语言即为编程语言.编程语言是程序员与计算机沟通的介质. 编程          :编程是程序员将自己思想流程按照编程规则写下来,产出的结果就是包含一堆字符的文件. 二.程序语言分类 机器语言:直接用二进制编程,直接操作硬件 汇编语言:简写的英

PYTHON学习之路_PYTHON基础(4)

学习内容: 1.Python函数的基本语法 2.Python函数的返回值与变量 3.Python嵌套函数 4.Python递归函数及实例(二分查找) 5.Python匿名函数 6.Python内置方法 7.Python实例 一.Python函数的基本语法 1.定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 def f(n): print (n**n) return n**2 2.特性 (一)减少重复代码 (二)使程序变的可扩展 (三)使程序变

python学习之路-5 基础进阶篇

本篇涉及内容 双层装饰器字符串格式化 双层装饰器 装饰器基础请点我 有时候一个功能需要有2次认证的时候就需要用到双层装饰器了,下面我们来通过一个案例详细介绍一下双层装饰器: 执行顺序:自上而下 解释顺序:自下而上 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51

PYTHON学习之路_PYTHON基础(8)

学习内容: Python模块介绍 1.经典类 or 新式类 2.抽象接口 3.静态方法.类方法.属性方法 4.反射 5.异常处理 6.socket编程初识 7.用socket实现get.put文件等功能 一.经典类 or 新式类 二.抽象接口 3.静态方法.类方法.属性方法 4.反射 5.异常处理 try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理. 如果你不想在异常发生时结束你的程序,只需在try里捕获它. 语法: 以下为简单的try....exce