Python--文件操作(操作文件)
文件的操作包含:读、写、修改
文件的多种操作:
# 读取文件的所有内容
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--文件操作(操作文件)的更多相关文章
- python对文件的操作
一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 2.返回指定目录下的所有文件 ...
- Python基础7:文件操作
[ 文件操作] 1 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下: 昨夜寒蛩不住鸣. 惊回千里梦,已三更. 起来独自绕阶行. 人悄悄,帘外月胧 ...
- Python 文件常见操作
# -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname() ...
- 【Python全栈笔记】05 [模块二] 19 Oct 文件的操作
文件操作 一般步骤1. 文件打开 2. 文件操作 3. 文件关闭 1. 打开文件 使用open(文件名(绝对路径), 打开模式, 编码) 文件打开的模式有: r: 只读模式(默认) w: 只写模式 ...
- Python 第三天 文件操作(2)
文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open(...) 和 fi ...
- python学习笔记4(文件操作)
文件操作: 1.f=open(”caidan”,”w”,encoding=”utf8”) 直接打开一个文件,如果文件不存在则创建文件 f.close() 2.with open (”caid ...
- python学习笔记-(七)python基础--集合、文件操作&函数
本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...
- Python自动化 【第三篇】:Python基础-集合、文件操作、字符编码与转码、函数
1. 集合 1.1 特性 集合是一个无序的,不重复的数据组合,主要作用如下: 去重,把一个列表变成集合实现自动去重. set可以看成数学意义上的无序和无重复元素的集合,因此,两 ...
- Python入门笔记(16):对文件的操作(2)
一.文件系统 从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统.具体地说,它负责为用户建立文件,存入.读出.修改.转储文件,控制文件的存取,当用 ...
- Python入门笔记(15):对文件的操作(1)
一.文件对象 我理解的文件对象就是一个接口,通过这个接口对文件进行相关操作. <Python 核心编程>上说的很晦涩,这里没有深刻理解到,希望有人能解释给我听. >>> ...
随机推荐
- Spark_Streaming整合Kafka
Spark Streaming 整合 Kafka 一.版本说明二.项目依赖三.整合Kafka 3.1 ConsumerRecord 3.2 生产者属性 3 ...
- SVN:TortoiseSVN SendRpt.exe not found 完美解决
今天来上班的时候,发现公司用的svn版本和我自己的不一致,其实可以使用但是还是神经质的更新了一下.结果每次右键都会出一个异常.下图所示. 期初以为是哪里配置错误,或者版本冲突,经过网上查找办法,完美解 ...
- 可修改的区间第K大 BZOJ1901 ZOJ2112
http://blog.csdn.net/u014492306/article/details/47981315 //变相离线做法 离散化缩小区间范围,做两大个线段树,第一个就是普通的持久化树,有个前 ...
- 【Java】手把手模拟CAS,瞬间理解CAS的机制
话不多少,先看个案例,[模拟100个用户,每个用户访问10次网站]”: public class ThreadDemo1 { //总访问量 ; //模拟访问的方法 public static void ...
- PHP 操作结果集对象方法
<?php header('Content-type:text/html;charset=utf-8'); //建立 或者 关闭mysql服务器 @符号用于屏蔽错误信息 $link=@mysql ...
- C#实现自定义列表
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- java远程执行linux服务器上的shell脚本
业务场景:需要从服务器A中新增的文件同步至本地服务器,服务器A中内存有限,需同步成功之后清除文件. Java调用远程shell脚本,需要和远程服务器建立ssh链接,再调用指定的shell脚本. 1.创 ...
- Redis学习笔记(2)
一.配置文件(部分) 1. UNITS(单位) 数据单位 2. INCLUDES(包含) 可以包含其他配置文件,而redis.conf作为总的配置文件 3. NETWORK(网络配置) -网络端口的绑 ...
- 【JavaScript数据结构系列】07-循环链表CircleLinkedList
[JavaScript数据结构系列]07-循环链表CircleLinkedList 码路工人 CoderMonkey 转载请注明作者与出处 1. 认识循环链表 首节点与尾节点相连的,就构成循环链表.其 ...
- CentOS 安装 git2.x.x 版本
方法一 源码方式安装 第一步:卸载旧的git版本. $ yum remove git 第二步:下载git $ wget --no-check-certificate https://www.kerne ...