文件操作

注意:

1. r+ 最为常用

2.encoding 的编码格式一定要与文件编码格式一致

读取 r  rb

#在本地创建 txt 格式的文件默认使用 gbk 格式
f = open('e:/py/file.txt',mode='r',encoding='gbk')
content = f.read()
print(content,type(content))
f.close() # b 二进制模式 bytes
f= open('e:/py/file.txt',mode='rb')
content = f.read()
print(content,type(content))
f.close()

只写  w  wb

#只写  w
#我们写入的格式为 utf-8 那么当我们查看时也要使用 utf-8 格式
#没有该文件 w 会创建文件
f = open('e:/py/test.txt',mode='w',encoding='utf-8')
f.write('正在写入...')
f.close() #存在该文件 会覆盖写入
#即只写的逻辑为 先清空文件在写入
f = open('e:/py/test.txt',mode='w',encoding='utf-8')
f.write('已写入.')
f.close() #wb 写入
#默认写入 bytes 类型 需要使用 encode 转换为 str 类型
#写入与文件默认格式不同的类型 如:utf-8 会自动转换
f = open('e:/py/test.txt',mode='wb')
f.write('sfssg个人是的.'.encode('gbk'))
f.close()

追加  a  ab

#追加  a
#追加与文件默认格式不同的类型 如:utf-8 不会自动转换
#默认会自动追加在文件光标的位置(即有文字的最后一位上)
f = open('e:/py/test.txt',mode='a',encoding='gbk')
f.write('追加...')
f.close() #ab 追加
#追加与文件默认格式不同的类型 如:utf-8 不会自动转换
f = open('e:/py/test.txt',mode='ab')
f.write('方式...'.encode('utf-8'))
f.close()

读写   r+  最常用

#读写时的文件必须和源文件编码一致
#读写的位置是在读完后的最有一个字符后面
#试想在 r+ 模式下 改变读写顺序
#会在文件开头写入 每写入一个字符便会替换一个字符
f = open('e:/py/test.txt',mode='r+',encoding='utf-8')
print(f.read())
f.write("...")
f.close() #r+ 也存在 bytes 类型 r+b
#要与源文件编码一致
f = open('e:/py/test.txt',mode='r+b')
print(f.read())
f.write("你就能看".encode('gbk'))
f.close()

写读  w+ 不常用

#还是先清除 在添加  所以没什么用
#w+ 也存在 bytes 类型 w+b
f = open('e:/py/test.txt',mode='w+',encoding='utf-8')
f.write("...")
print(f.read())
f.close() #w+ 与 seek 调节光标
#没什么用
f = open('e:/py/test.txt',mode='w+',encoding='utf-8')
f.write("...")
f.seek(0) #光标在 0 的位置
print(f.read()) #读出结果
f.close()

追加 a+

#与 a 的区别在于 a 只可以执行一个动作
#a+ 可以执行多步
#a+ 也存在 bytes 类型 a+b
f = open('e:/py/test.txt',mode='a+',encoding='gbk')
f.write('追加...')
print(f.read()) #这样仍然读不到内容 因为光标在最后
f.close() # a+ 与 seek
f = open('e:/py/test.txt',mode='a+',encoding='gbk')
f.write('追加...')
f.seek(0) #光标置于 0 的位置
print(f.read())
f.close()

修改文件

#把要修改的文件和修改好的部分写入到创建好的新文件中
#然后删除源文件
with open('e:/py/test.txt',encoding='gbk')as f,\
open('e:/py/test-bak.txt',"w",encoding='utf-8')as f2:
for i in f:
if '发生' in i:
i=i.replace("发生","产生")
f2.write(i) #写文件 import os
os.remove('e:/py/test.txt') #删除源文件
os.rename('e:/py/test-bak.txt','e:/py/test.txt') #重命名文件

功能详解

read 与 seek 

#按照字符读出  read 读出来的都是字符
#字符是能看到的最小单位
#要与源文件编码一致
f = open('e:/py/test.txt',mode='r+',encoding='gbk')
print(f.read(3))
f.close() #read 结合 seek
#seek 是按照字节来读取的
f = open('e:/py/test.txt',mode='r+',encoding='gbk')
f.seek(4) #gbk 每个汉字 2 个字节 utf-8 每个汉字 3 个字节
print(f.read())
f.close()

tell 获取光标位置

f = open('e:/py/test.txt',mode='r+',encoding='gbk')
f.seek(4) #按照字节定义光标位置
print(f.tell())
f.close()

移动光标读取后三个字

f = open('d:/py/file.txt',mode='r+',encoding='utf-8')
f.readline()  #读取一行使光标移动到末尾
f.seek((f.tell())-9)  #先锁定光标位置 在进行移动
print(f.read())
f.close()

readable、readline、readlines 与 truncate

f = open('e:/py/test.txt',mode='r+',encoding='gbk')
#print(f.readable()) #是否可读 返回值:true false
#print(f.readline()) #每次读一行,即一行一行的读
#print(f.readlines()) #把每一行当做一个元素,添加到 list 中
f.truncate(2) #对源文件截取一段数据用来更改,并覆盖源文件
f.close()

 读取第二行内容

f = open('e:/py/test.txt',mode='r+',encoding='gbk')
f.readline()
f.seek(f.tell())
print(f.readline())
f.close()

读整个文件

#for 循环写法
#循环打印出每一行(包括换行符)
#读文件时 要分段读 因为你不知道文件有多大
f = open('e:/py/test.txt',mode='r+',encoding='gbk')
for i in f:
print(i)
f.close() #with 写法(自动关闭——close)
#可以同时打开多个文件
with open('e:/py/test.txt',mode='r+',encoding='gbk') as file:
print(file.read()) with open('e:/py/test.txt',mode='r+',encoding='gbk') as file,\
open('e:/py/file.txt',mode='r+',encoding='gbk') as file2:
print(file.read())
print(file2.read())

day 8 - 1 文件操作的更多相关文章

  1. 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档

    .net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...

  2. 野路子出身PowerShell 文件操作实用功能

    本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...

  3. Node基础篇(文件操作)

    文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...

  4. 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)

    ========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...

  5. SQL Server附加数据库报错:无法打开物理文件,操作系统错误5

    问题描述:      附加数据时,提示无法打开物理文件,操作系统错误5.如下图: 问题原因:可能是文件访问权限方面的问题. 解决方案:找到数据库的mdf和ldf文件,赋予权限即可.如下图: 找到mdf ...

  6. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

  7. Linux文件操作的主要接口API及相关细节

    操作系统API: 1.API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用,应用层程序通过调用API来调用操作系统中的各种功能,来干活 文件操作的一般步骤: 1.在linux系统 ...

  8. C语言的fopen函数(文件操作/读写)

    头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为:    FILE * fopen(const char * path, c ...

  9. Python的文件操作

    文件操作,顾名思义,就是对磁盘上已经存在的文件进行各种操作,文本文件就是读和写. 1. 文件的操作流程 (1)打开文件,得到文件句柄并赋值给一个变量 (2)通过句柄对文件进行操作 (3)关闭文件 现有 ...

  10. python 文件操作(转)

    python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...

随机推荐

  1. fopen() 返回 NULL, 奇葩原因:当前进程打开多个句柄,忘记关闭。(bug)

    今天在测试一个程序的时候,突然第一次弹出错误对话框,提示: 创建新文件失败. fopen() 返回 NULL 我又重启程序测试,还是提示同样的错误. 经过几分钟的检查,发现一个规律:当处理到500多个 ...

  2. C++ template一些体悟(2)

    class template的一般化设计之外,特别针对某些参数做特殊设计 #include <iostream> using namespace std; //一般设计 template& ...

  3. marks学习2

    控件的大小单位用dp  控件的高度和宽度 sp字体的单位 控件的字体的大小.可缩放字体. 内边距 padding控件的边缘到控件内荣的距离

  4. 安装webpack-dev-server始终不成功

    先安装了webpack,后来安装webpack-dev-server会一直出现这个问题,我把webpack提示的1.0.0 , 2.0.0 ,3.0.0全都在全局装了一遍都没用,还是会出现这个问题.最 ...

  5. SSH框架调用scrapy爬虫

    毕设刚答辩完毕,不用担心查重了,所以补一篇毕设的内容. 毕设是图片搜索网站,使用python爬虫获取图片资源,再由javaweb管理使用图片的信息和图片,大部分实现起来十分简单,也不好意思炫耀.但是有 ...

  6. Event Recommendation Engine Challenge分步解析第四步

    一.请知晓 本文是基于: Event Recommendation Engine Challenge分步解析第一步 Event Recommendation Engine Challenge分步解析第 ...

  7. Tensorflow object detection API 搭建物体识别模型(一)

    一.开发环境 1)python3.5 2)tensorflow1.12.0 3)Tensorflow object detection API :https://github.com/tensorfl ...

  8. Linux下weblogic10.3.6(jar)版本安装详解

    一.安装前的准备 安装weblogic是需要JDK环境的,虽然weblogic有自带的JDK,但是我一般是自己选择JDK进行安装,如果你要自行安装,可以参考我的另一篇博客 https://www.cn ...

  9. 端口与进程-----Window cmd命令

    ********************  windows 篇 ********************** cmd命令: services.msc    打开本地服务页面 一.查看windows系统 ...

  10. golang反射举例

    反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:并且能改变它的属性. package main import ( "f ...