文件的操作包含:读、写、修改

文件的多种操作:

 # 读取文件的所有内容
data = open("yesteday.txt", encoding="utf-8") .read()
print(data) ''' f:文件句柄(包含这个文件的文件名,字符集,大小,在硬盘中的起始位置) ''' # 'a'=append 追加
f = open("yesteday2.txt", 'a', encoding="utf-8")
f.write("qwerQWER1111\n") #在文件的结尾添加内容
f.close() # 'w'=write 写,覆盖之前的内容
f = open("yesteday2.txt", 'w', encoding="utf-8")
f.write("AAAADDDDD\n")
f.write("CCCCVVVVV\n")
f.close() #'r'=read 只读
f = open("yesteday2.txt", 'r', encoding="utf-8")
print(f.read())
f.close() # 'r+' = r+a 读和在末尾追加
f = open("yesteday.txt", 'r+', encoding='utf-8')
print(f.readline())
print(f.tell())
f.write("---nihao---\n")
print(f.readline()) #无输出结果是因为r+写操作是写在末尾,所以光标到了末尾,读不出来东西了
print(f.tell()) #tell按字符计数,返回光标的位置
f.seek(0) #返回到某个位置
print(f.read())
f.close() # 'w+' = w+r 写和读,写还是只能追加在文件最后
f = open("yesteday.txt", 'w+', encoding='utf-8')
print(f.readline()) #读不到内容,因为w+会新创建一个文件,将原文件的内容清空
f.write("---nihao---\n") #写操作是写在末尾,所以光标到了末尾,读不出来东西了
f.write("---oh,god---\n")
print(f.tell())
f.seek(3)
print(f.tell())
print(f.readline()) #当光标不在一行的开头时,readline读取的内容为光标之后的部分
print(f.tell())
f.write("写在第一行后面") #写操作是写在末尾,即使通过调整光标的位置,也无法将这行写到第一行后面
print(f.tell())
f.seek(0)
print(f.read())
f.close() # 'a+'追加读
f = open("yesteday.txt", 'a+', encoding='utf-8')
print(f.read()) #读不出内容来,因为a+默认光标在结尾
f.write("---nihao---\n")
print(f.tell()) #tell按字符计数,返回光标的位置
f.seek(0) #返回到某个位置
print(f.read())
f.close() # 'rb' = 以二进制格式读文件
f = open("yesteday.txt", 'rb') #不能加encoding的格式
print(f.read())
f.seek(0) #返回到某个位置
print(f.read())
f.seek(0) #返回到某个位置
print(f.read())
f.seek(0) #返回到某个位置
print(f.readline()) #readline读一行
f.close() # 'wb' = 以二进制格式写文件,会清空原文件内容
f = open("yesteday.txt", 'wb') #使用wb时写时需要将字符串变为二进制格式
f.write("hello binary\n".encode()) #将hello binary变为二进制格式后写入文件
f.write("hello binary\n".encode())
f.close() # 'ab' = 以二进制格式追加写文件
f = open("yesteday.txt", 'ab')
f.write("hello binary\n".encode())
f.close()

有关文件的其他方法:

 # f = open("yesteday2.txt", 'a+', encoding="utf-8")
# print(f.tell()) #光标在文件最后
# print(f.read(5)) #读取不到内容
# print(f.tell()) #tell按字符计数
# f.seek(3) #返回到某个位置
# print(f.readline()) #当seek回到某行的中间时,下次读取一行时将cut掉前面的部分,读取后面的
# f.seek(3)
# print(f.tell()) #获取文件读取到的位置
# print(f.encoding) #返回文件句柄的编码格式
# print(f.fileno()) #返回编号--操作系统接口
# print(f.seekable()) #是否可以将光标移动回去,能返回True
# print(f.readable()) #判断文件是否可读
# print(f.writable()) #判断文件是否可写
# f.write("1111222333\n")
# f.write("1111222333\n") #写操作会先存在内存缓存区,不是直接写到硬盘,当缓存区达到一个数值时,同时写到硬盘里
# f.flush() # 强制刷新--将缓存区的内容写到硬盘
# f.truncate(10) #截断 ,从指定的位置截断后面的部分,如果不写默认从头开始截断,即清空,seek移动光标没
# f.close() #关闭打开的文件
# print(f.closed) #判断是否关闭了

有关文件读的示例:

 # 读五行
f = open("yesteday2.txt", 'r', encoding="utf-8")
for i in range(5):
data = f.readline()
print(data)
f.close() # 读5个字符
f = open("yesteday2.txt")
print(f.tell())
print(f.read(5))
f.close() # 打印除了第三行的其他内容
# enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中
f = open("yesteday2.txt", 'r', encoding="utf-8")
for index,line in enumerate(f.readlines()):
if index == 3:
print("------")
continue
print(line.strip()) # strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列
f.close() # 效率最高,读一行往内存里加一行,读下一行会把内存里的上一行覆盖掉
f = open("yesteday2.txt", 'r', encoding="utf-8")
count = 0
for line in f:
if count == 3:
count += 1
print("----------3-----------")
continue
print(line)
count += 1
f.close()

通过上面的放法,实际并不能完成文件的修改,因为写入文件总是写在文件最后或覆盖掉源文件

通过以下方式可修改文件内容:

>>> testfile.txt
就像一部电影原谅惨败的票房
我走在街上闷着头游荡把心事流放
关掉电话卸下行囊席地坐路旁
一如乞人不需要形象
万家灯火带领星光拼出个晚上
绚烂的欲望涌进了街巷每个虚弱地方
广场音箱兀自播放某个排行榜
上榜的歌像背景一样
那不是歌 那是孤单的歌
这白马非马的逻辑鲜有附和
唱着什么 故事里多少曲折
熙来攘往中几人识得几人识得
那不是歌 那是我写的歌
当时的我喜或悲已经记不得
南辕北辙 破坏热闹气氛的歌
几人识得几人识得
被人慌慌张张按掉了
 f = open("testfile", "r", encoding="utf-8")
f_new = open("testfile2", "w", encoding="utf-8") for line in f:
if "几人识得" in line:
# '1'代表这一行只修改匹配的第一处
line = line.replace("几人识得", "谁(shui)人识得", 1)
f_new.write(line)
f.close()
f_new.close()

为了防止进行完文件操作后,忘记关闭文件,可以使用with语法:

 #为了避免打开文件后忘记关闭,可以通过管理上下文,即
with open("testfile", "r", encoding="utf-8") as f:
for line in f:
print(line) #如此方式,当with代码块执行完毕时,内部会自动关闭 并释放资源
#在py2.7后,with又支持同时对多个文件的上下文进行管理,即
with open("testfile", "r", encoding="utf-8") as f1,\
open("testfile2", "w", encoding="utf-8") as f2:
print(f1.readline())
f2.writable()

Python--文件操作(操作文件)的更多相关文章

  1. python对文件的操作

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

  2. Python基础7:文件操作

    [ 文件操作] 1 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下: 昨夜寒蛩不住鸣. 惊回千里梦,已三更. 起来独自绕阶行. 人悄悄,帘外月胧 ...

  3. Python 文件常见操作

    # -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname()  ...

  4. 【Python全栈笔记】05 [模块二] 19 Oct 文件的操作

    文件操作 一般步骤1. 文件打开 2. 文件操作 3. 文件关闭 1. 打开文件 使用open(文件名(绝对路径), 打开模式, 编码) 文件打开的模式有: r:  只读模式(默认) w: 只写模式 ...

  5. Python 第三天 文件操作(2)

    文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open(...) 和  fi ...

  6. python学习笔记4(文件操作)

    文件操作: 1.f=open(”caidan”,”w”,encoding=”utf8”)      直接打开一个文件,如果文件不存在则创建文件 f.close() 2.with open (”caid ...

  7. python学习笔记-(七)python基础--集合、文件操作&函数

    本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...

  8. Python自动化 【第三篇】:Python基础-集合、文件操作、字符编码与转码、函数

    1.        集合 1.1      特性 集合是一个无序的,不重复的数据组合,主要作用如下: 去重,把一个列表变成集合实现自动去重. set可以看成数学意义上的无序和无重复元素的集合,因此,两 ...

  9. Python入门笔记(16):对文件的操作(2)

    一.文件系统 从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统.具体地说,它负责为用户建立文件,存入.读出.修改.转储文件,控制文件的存取,当用 ...

  10. Python入门笔记(15):对文件的操作(1)

    一.文件对象 我理解的文件对象就是一个接口,通过这个接口对文件进行相关操作. <Python 核心编程>上说的很晦涩,这里没有深刻理解到,希望有人能解释给我听. >>> ...

随机推荐

  1. scrapy五大核心组件

    scrapy五大核心组件 引擎(Scrapy)用来处理整个系统的数据流处理, 触发事务(框架核心) 调度器(Scheduler)用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. ...

  2. ios]企业开发者账号申请

    1. 先打电话到“华夏邓白氏公司”(上海:400-820-3536 北京:400-810-3531 广州:800-830-9032),我打的是北京分部的电话,就说自己因为申请apple开发者账号,需要 ...

  3. ftp服务器搭建(二)

    1.已经安装好了vsftpd  进入到根目录下的/etc目录 ls查看一下 2.拷贝一下上面的两个配置文件 我拷贝到了我新建的目录中了 3.查看现在的网络连接方式——我的是-net方式 当然其他方式也 ...

  4. 工作中遇到的SQL

    1.根据a表中的字段col,修改b表中的col UPDATE a INNER JOIN b ON a.id = b.id SET b.col = xx WHERE a.col = xx 2.模糊查询 ...

  5. 面向对象案例-学生信息管理系统V0.6

    更新版本 面向对象案例 - 学生信息管理系统V1.0 项目要求: 实体类: 学生类: id, 姓名,年龄,性别,成绩 需要使用数组保存学生信息 Student[] allStu 需要完成的方法 1. ...

  6. JavaScript的流程控制语句以及函数

    一.流程控制 1. 作用:控制代码的执行顺序 2. 分类 2.1顺序结构:从上到下依次执行代码语句 2.2选择结构: 1. if语句 简单if结构 if(条件表达式){ 表达式成立时执行的代码段 } ...

  7. 01 . 分布式存储之FastDFS简介及部署

    分布式存储简介 现代的互联网已经进入大数据时代,每天都有数以万计的数据产生,这些数据的规模轻轻松松地可以达到几P的级别,传统的的单机存储早已捉襟见肘,根本无法满足大数据对存储系统的要求.这时,各种分布 ...

  8. vue 使用 elementUI 和 antd 的细微差别

    Checkbox a-checkbox 没有value属性,绑定用checked Collapse 使用折叠面板的时候,antd 的层级关系是 .ant-collapse >.ant-colla ...

  9. POJ 2671 Jimmy's Bad Day题解(很详细很友好,类似区间dp)

    有问题的话欢迎在评论区提出 题意: 题目链接 你是一个送快递的,现在给你一个环,环的边有权值,代表走这条边所花的时间,每个点代表一个地点,点有点权,代表这个点上有多少货物需要你送.初始时间\(t=0\ ...

  10. 【HBase】表的version

    建表.添加数据 Examples: hbase> create 'ns1:t1', 'f1', SPLITS => ['10', '20', '30', '40'] hbase> c ...