Python 入门之 文件

1、文件操作

找到文件位置

双击打开

进行一些操作

r—read(读) w—write(写) a—追加
rd--读字节 wd--清空写,写字节 ad --追加写(字节)

r+ -- 读写 w+ --写读 a+ -- 追加读

关闭文件

open() : 打开 ,open通过python控制操作系统进行打开文件

open("t1","r",encoding="utf-8") //Open(“文件的路径”,”进行的操作”,”文件的编码形式”)

file 文件的位置

mode 默认不写就是r

encoding 文件的编码

f 文件句柄

文件只能读取一次

(1)读操作

<1> r -- 读

f = open("D:\Python_s25\day08\小姐姐电话号",mode="r",encoding="utf-8")print(f.read())   # 全部读取
print(f.read(3)) # 按照字符读取
print(f.readline()) # 默认尾部有一个\n
print(f.readline().strip()) # 读取一行
print(f.readline().strip()) # 将\n去除
print(f.readlines()) #一行一行读取,全部存储在列表中

路径:

绝对路径:从磁盘(c盘)开始查找

相对路径:相对于某个路径文件进行查找

路径的转义:

1."D:\\Python_s25\\day08\\t1"
2.r"D:\Python_s25\day08\t1" -- 推荐使用

<2> rb -- 读字节:

f = open("timg.jpg",mode="rb")
print(f.read()) # 全部读取
print(f.read(3)) # 按照字节读取
print(f.readline()) # 按照行进行读取
print(f.readlines())

r和 rb的区别:

1.r需要指定encoding,rb不需要 (字节操作,不能指定encoding)

2.r模式中的read(3) 按照字符读取, rb模式中的read(3) 按照字节读取

read 和 readlines 如果文件较大时,会出现内存溢出

解决方案:当文件较大时,使用for循环进行读取(只是展示了一下)

面试题:

f = open('t1',mode="r",encoding="utf-8")
for i in f:
print(i.strip())

(2)写操作:

<1> w -- 清空写(写的是文本)

先清空文件(在打开文件时进行清空)
写入内容

当模式为w 和 a 时,有文件就是用当前文件,没有文件就创建一个文件

ff = open("a1",mode="w",encoding="utf-8")
ff.write("123") # 写的内容必须是字符串
ff = open("a1",mode="w",encoding="utf-8")
ff.write("我是一个字符串串") # 写的内容必须是字符串
ff = open("a1",mode="w",encoding="utf-8")
ff.write("[1,2,3,4]\n") # 写的内容必须是字符串
ff.write('1111\n') # 写的内容必须是字符串
ff.write('2222\n') # 写的内容必须是字符串
ff = open("a1",mode="w",encoding="utf-8")
ff.write("[1,2,3,4]\n") # 写的内容必须是字符串
ff.write('1111\n') # 写的内容必须是字符串
ff.write('2222\n') # 写的内容必须是字符串

<2> wb -- 清空写(写字节)

f = open('timg.jpg',mode="rb")
f1 = open("g1.jpg",mode="wb")
content = f.read()
f1.write(content)

(3)追加操作:

<1> a -- 追加写(文本)

f = open("b1",mode="a",encoding="utf-8")
f.write("你好啊\n")
f.write("我好啊\n")
f.write("他好啊\n")
f.write("大家好啊\n")

<2> ab -- 追加写(字节)

(4)+操作:

<1> r+ 读写(有点用)

坑 -- 使用方式是错误
f = open("b1",mode="r+",encoding="utf-8")
f.write("今天是周一") # write是清空写
print(f.read())
正确的操作:
f = open("b1",mode="r+",encoding="utf8")
print(f.read())
f.write("今天是周一")

<2> w+ 写读(有点用)

f = open("b1",mode="w+",encoding="utf-8")
f.write("今天是周一")
f.seek(0) # 移动光标
print(f.read())
f = open("b1",mode="w+",encoding="utf-8")
f.write("今天是周一")
f.seek(0) # 移动光标
f.write("啊啊啊啊啊啊")
f.seek(0)
print(f.read())

<3> a+ 追加读

f = open("b1",mode="a+",encoding="utf-8")
f.write("今天是周一")
f.seek(0) # 移动光标
f.write("啊啊啊啊")
print(f.read())

(5)其他操作:

<1> 移动光标 : seek()

seek() 移动光标
f.seek(0,0) # 移动光标到文件的头部
f.seek(0,1) # 移动光标到当前位置
f.seek(0,2) # 移动光标到文件末尾
f.seek(6) # 移动6个字节。光标是按照字节移动 f = open("a1","r",encoding="utf-8")
print(f.read(5))
f.seek(0,0) # 移动光标到文件的头部
f.seek(0,1) # 移动光标到当前位置
f.seek(0,2) # 移动光标到文件末尾
print(f.read())
f = open("c1","r",encoding="gbk")
f.seek(6) # 光标是按照字节移动
print(f.read(3))

<2> 查看光标: tell -- 查光标

tell 查光标
f = open("c1","r",encoding="gbk")
print(f.read(3))
print(f.tell()) # 按照字节进行计算

<2> 修改文件: import os #操作系统交互的接口

f = open('a2',"r",encoding="utf-8")
f1 = open("a1","w",encoding="utf-8")
for i in f:
i = i.replace("日","天")
f1.write(i)
f.close()
f1.close()
os.remove("a2") # 删除不能找回
os.rename("a1","a2")
f = open('a2',"r",encoding="utf-8")
f1 = open("a1","w",encoding="utf-8")
for i in f:
i = i.replace("天","日")
f1.write(i)
f.close()
f1.close()
os.rename("a2","a3")
os.rename("a1","a2")

<3>With open

自动关闭文件
同一时间操作多个文件

考点:

import os  # 操作系统交互的接口
f = open('a2',"r",encoding="utf-8")
f1 = open("a1","w",encoding="utf-8")
i = f1.read().replace("天","日") # 将文件中全部内容读取 容易导致内存溢出f1.write(i)
f.close()
f1.close()
os.rename("a2","a3")
os.rename("a1","a2")
with open("a3","r",encoding="utf-8")as f,\
open('a2',"r",encoding="utf-8")as f1:
print(f.read())
print(f1.read())

2、文件操作的目的:

持久化:永久存储

Python 入门之 文件的更多相关文章

  1. Python入门篇-文件操作

    Python入门篇-文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.文件IO常用操作 open:打开 read:读取 write:写入 close:关闭 readlin ...

  2. python入门之文件处理

    1.读取文件 f=open(file="C:\BiZhi\新建文本文档.txt",mode="r",encoding="utf-8") da ...

  3. Python入门8文件处理

    文件处理文本模式name = input("请输入用户名:").strip()with open("a.txt","wt",encoding ...

  4. python入门(5)使用文件编辑器编写代码并保存执行

    python入门(5)使用文件编辑器编写代码并保存执行 两款文本编辑器: 一个是Sublime Text,免费使用,但是不付费会弹出提示框: 一个是Notepad++,免费使用,有中文界面: 请注意, ...

  5. python入门学习:9.文件和异常

    python入门学习:9.文件和异常 关键点:文件.异常 9.1 从文件中读取数据9.2 写入文件9.3 异常9.4 存储数据 9.1 从文件中读取数据 9.1.1 读取整个文件  首先创建一个pi_ ...

  6. Python 入门基础6 --字符编码、文件操作1

    今日内容: 1.字符编码 2.字符与字节 3.文件操作 一.字符编码 了解: cpu:将数据渲染给用户 内存:临时存放数据,断电消失 硬盘:永久存放数据,断电后不消失 1.1 什么是编码? 人类能够识 ...

  7. Python 入门学习(贰)文件/文件夹正则表达式批量重命名工具

    基于 Udacity 的 Python 入门课程 Programming Foundations with Python 基于 Python 2.7 思路 Project 2 是一个去除文件名中所有数 ...

  8. Python入门基础--字符编码与文件处理

    字符编码 文本编辑器存取文件的原理 #1.打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放与内存中的,断电后数据丢失 #2.要想永久保存,需要点击保存按钮:编辑器把内 ...

  9. [ Python入门教程 ] Python文件基本操作

    本文将python文件操作实例进行整理,以便后续取用. 文件打开和创建 Python中使用open()函数打开或创建文件.open()的声明如下: open(name[, mode[, bufferi ...

随机推荐

  1. 曙光浪潮IBM驱动

    https://pan.baidu.com/s/1lDrotg5jpdN_z0yOYyAo4w

  2. 官方转译:截止2018-12-10,chromedriver与chrome对应关系表

    谷歌驱动下载地址: http://npm.taobao.org/mirrors/chromedriver/ http://chromedriver.storage.googleapis.com/ind ...

  3. IT界须知的故事——仙童八叛徒

    原文:http://blog.sina.com.cn/s/blog_457012450100vnbl.html 许多电脑史学家都认为,要想了解美国硅谷的发展史,就必须了解早期的仙童半导体公司.这家公司 ...

  4. SpringBoot,用200行代码完成一个一二级分布式缓存

    缓存系统的用来代替直接访问数据库,用来提升系统性能,减小数据库复杂.早期缓存跟系统在一个虚拟机里,这样内存访问,速度最快. 后来应用系统水平扩展,缓存作为一个独立系统存在,如redis,但是每次从缓存 ...

  5. mount -o是什么意思

    mount -o是用loop设备, 在 linux挂载本地的(可能是硬盘上的) iso文件时, 使用的. -o 就是loop回环设备的意思. loop回路文件系统: 是: 用来在一个文件系统上实现另一 ...

  6. Octavia 的 HTTPS 与自建、签发 CA 证书

    目录 文章目录 目录 Octavia 为什么需要自建 CA 证书? GenerateServerPEMTask CertComputeCreate Amphora Agent AmphoraAPICl ...

  7. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第4节 maven生命周期和概念模型图_09maven概念模型图

    项目自身的信息 项目运行所依赖的扎包 运行环境信息:tomcat啊,JDK啊这些都属于运行环境 一个jar包的坐标由三个最基本的信息组成. 第一部分就是依赖管理. 第二个部分

  8. Linux中MySQL5.7设置utf8编码格式步骤

    关于编码问题,真的是弄得我很郁闷,网上找的帖子这方面也很多但都无济于事,晚上终于找到一篇有效的,特此贴上. 转自Ubuntu中MySQL5.7设置utf8编码格式步骤 1.首先打开终端 2.输入mys ...

  9. spring-mvc 3.* 多视图解析配置实例 ContentNegotiatingViewResolver

    一.起因     从spring 3.1.0升级到spring 3.2.0时,配置文件servlet.xml中出错. 错误信息: java.lang.String cannot be cast to  ...

  10. ARTS挑战

    最近有点迷茫,感觉自己工作了一年多,技术成长有限,我要做出改变.2019年11月2日,就从今天开始,参加耗子叔的ARTS挑战. ARTS的初衷 Algorithm:主要是为了编程训练和学习.每周至少做 ...