Python基础之文件的基本操作
概述:文件的基本操作
1.open 打开文件 f = open("xxx",mode="r",encoding="utf-8") #常用形式 打开一个文件,获得文件句柄
f = open("E:\python\python work\day09\任天堂.txt",mode="r",encoding="utf-8")
content = f.read() # 一次性全部读取
content = f.readline() # 一次读取一行
content = f.readlines() # 一次性读取,并生成列表
f.close()
print(content)
f = open("xbox",mode="w",encoding="utf-8")
content = f.write("这是个什么鬼") 2.绝对路径,相对路径
1. 绝对路径(当文件路径是固定的时候)
从磁盘根目录找文件。 windows下用的就是c,d,e,f, linux: \user\bin\xxxx
2. 相对路径(用的多)
相对路径相对于当前程序所在的文件夹
../ 表示上一层文件夹 f = open("E:/python/python work/day09/任天堂.txt",mode="r",encoding="utf-8") #绝对路径
f = open("../day09/任天堂.txt",mode="r",encoding="utf-8") # 相对路径 用的较多
content = f.read()
f.close()
print(content) 注意:句柄f是一个可以迭代的对象,所以可以进行遍历操作
f = open("../day09/任天堂.txt",mode="r",encoding="utf-8")
for el in f: # 一行一行的读取,末端会有换行符/n 要清除掉
print(el.strip()) 2.文件操作-mode的相关操作
2.1 r 只读
f = open("../day09/任天堂.txt",mode ="r",encoding="utf-8")
content = f.read() # 一次读完
content = f.read(3) #一次读两个字符(返回两个字)
f.write("haha") # 只能写不能读 会报错 not writable
f.close()
print(content) 2.2 w 只写
f = open("ps4.txt",mode ="w",encoding="utf-8") # w 如果文件不存在会重新创建一个新文件,假如存在会先清空该文件
f.write("啥玩意,一点也不好玩") #使用 w 要慎重
content = f.read() #只可以写不可以读 报错:not readable
f.close() 2.3 a 追加
f = open("ps4.txt",mode ="a",encoding="utf-8") # a模式下会在文件尾部写入相应字符
f.write("可是还想买啊")
content = f.read() ##仍然只可以写不可以读 报错:not readable
f.close()
print(content) 2.4 r+ 读加写
f = open("../day09/任天堂.txt",mode ="r+",encoding="utf-8")
content = f.read() # 可读可写,但因为光标的缘故,必须先读后写才能写在尾部,但注意 若先写会开头写入,并覆盖之前的东西
f.write("炸弹人")
content = f.read()
f.close()
print(content) 注意坑一 r+
坑: 不论你读取多少内容。再次写入的时候都是在末尾,不会因为光标在第三个字而在第三个字写入
f = open("../day09/任天堂.txt", mode="r+", encoding="utf-8")
info = f.read(3)
f.write("洛克人")
f.close()
print(info) 2.5 w+ 写加读
f = open("ps4.txt",mode ="w+",encoding="utf-8") # 依旧坑爹,打开就会清空文件
f.write("ps4没有swith一半好玩") #虽然可以读可是没什么卵用,读放在写之前,因为清空什么也读不到,
c = f.read() # 而在写完之后由于光标在末尾,也什么都读不到,需靠移动光标才能读
f.close()
print(c) 2.6 a+ 追加读写
f = open("../day09/任天堂.txt",mode ="a+",encoding="utf-8")
f.write("哼哼哈哈,马里奥网球") # a+ 无论光标在何处,都只会在末尾添加内容,并且一开始光标会在末尾,无论先读后读也读不到东西
c = f.read()
f.close()
print(c) 2.7 rb wb ab 之前的模式都是针对文本类型,而这三个主要针对非文本(图片视频等)的内容
形式
f = open(r"c:\胡一菲.jpg",mode ="rb") #不需要填写编码格式,因为非文本都是以Bytes为单位的,取和写入的是字节
需要你掌握的,因为图片一般都是粘贴复制为主,复制非文本的模式
把胡一菲从c盘复制到d盘, 单纯的从bytes角度来复制的。 适用于所有文件
f1 = open(r"c:\胡一菲.jpg", mode="rb")
f2 = open(r"d:\胡二非.jpg", mode="wb")
for line in f1: # 分批量的读取内容
f2.write(line) # open()出来的结果可以使用read或者write. 根据mode来看
f1.close()
f2.close() 2.8 r+b w+b a+b #其操作形式和r+ w+ a+基本一致,只是文本类型不一样罢了 3.光标 形式 f.seek(偏移量,(0,1,2)) 注意偏移量是以byte为单位的,不是一个字符 f = open("../day09/任天堂.txt",mode ="r",encoding="utf-8")
f.seek(0) # == f.seek(0,0) 光标移动到开头处
f.readline()
f.seek(0,1) # 光标移动到当前位置处,偏移量为0
f.seek(0,2) # 光标移动到结尾处
print(f.tell()) # f.tell() 可采集到目前光标的所在位置,但仍要注意是以Byte为单位的,unicode一个中文三个Byte
f.close() 3.1 truncate() 截断文件. 慎用
f = open("ps4.txt",mode ="w+",encoding="utf-8")
f.write("ps4没有swith一半好玩")
f.seek(6)
f.truncate() #截取到之前光标所在的位置,后面的不要
f.truncate(12) #不管前面光标在哪里,都从头开始截取到byte12的地方,剩下的不要
f.close() 4.文件修改
文件修改: 只能将文件中的内容读取到内存中, 将信息修改完毕, 然后将源文件删除, 将新文件的名字改成老文件的名字
import os
import time
f1 = open("ps4.txt",mode ="r+",encoding="utf-8")
f2 = open("ps4.txt_副本", mode="w", encoding="utf-8")
c = f1.readline()
f2.write(c.replace("ps4","xbox"))
f1.close()
f2.close()
time.sleep(3)
os.remove("ps4.txt")
time.sleep(3)
os.rename("ps4.txt_副本","ps4.txt",) 此处采用了新方法写open 好处是可以不用写 f.close()
import os # 引入操作系统
import time # 引入时间函数
with open("ps4.txt",mode ="r+",encoding="utf-8") as f1,\
open("ps4.txt_副本", mode="w", encoding="utf-8") as f2:
c = f1.readline()
f2.write(c.replace("ps4","xbox"))
time.sleep(3) #延迟三秒
os.remove("ps4.txt")
time.sleep(3)
os.rename("ps4.txt_副本","ps4.txt",) 4.文件操作的应用
lis = []
with open("水果批发.txt",mode="r",encoding="utf-8") as f1:
c = f1.readline().strip() #此处即可以提取出标题也可将光标更改至第二行,方便后面抓取数据
lis1 = c.strip().split(",") # 读取第一行 编号,名称,价格,库存数,产地
for el in f1: # 1,凤梨,20,5202,台湾,1
dic = {}
for i in range(len(lis1)):
dic[lis1[i]] = el.strip().split(",")[i] #项目与实际项目内容匹配
lis.append(dic) # 将字典加到列表中存储
print(lis)
Python基础之文件的基本操作的更多相关文章
- Python基础:文件的基本操作
# 打开文件(如果不存在则新建) 向其中写入 f = open('D:\\test.txt', 'w') f.write('hello world, i am here!') f.close() pr ...
- python基础之文件读写
python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...
- 第二篇:python基础之文件读写
python基础之文件读写 python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使 ...
- 七. Python基础(7)--文件的读写
七. Python基础(7)--文件的读写 1 ● 文件读取的知识补充 f = open('file', encoding = 'utf-8') content1 = f.read() content ...
- python基础篇(文件操作)
Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...
- Python基础_文件的的处理及异常处理
今天主要讲讲文件读写及异常处理. 一.文件操作 1.1 文件的创建及读 打开文件 open 函数 open(file,[option]) file 是要打开的文件 option是可选择的参数文件的打 ...
- 【穿插】Python基础之文件、文件夹的创建,对上一期代码进行优化
在上一期妹子图的爬虫教程中,我们将图片都保存在了代码当前目录下,这样并不便于浏览,我们应该将同一个模特的图片都放在一个文件夹中. 今天我们就简单讲一下Python下如何创建文件.文件夹,今后就可以用上 ...
- Python基础--基本文件操作
全部的编程语言都一样,学完了一些自带的数据机构后,就要操作文件了. 文件操作才是实战中的王道. 所以,今天就来分享一下Python中关于文件的一些基本操作. open方法 文件模式 这个模式对于写入文 ...
- python基础之文件处理
读和写文件 读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直 ...
随机推荐
- python 之 模块
在python模块,是一个python文件,以.py结尾,包含了python对象定义 和python语句 通过import语句 ,语法 import module1[,module2,module3, ...
- Oracle用户被锁定解决方法
解决方法: 1.用dba角色登陆:2.输入下面格式命令解锁: alter user 用户名 account unlock;3.如果密码忘记了,输入下面格式命令修改密码: alter user 用户名 ...
- Bytom国密网说明和指南
比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 国密算法 ...
- HDU 5441 Travel(并查集+统计节点个数)
http://acm.hdu.edu.cn/showproblem.php?pid=5441 题意:给出一个图,每条边有一个距离,现在有多个询问,每个询问有一个距离值d,对于每一个询问,计算出有多少点 ...
- HDU 5791 Two(LCS求公共子序列个数)
http://acm.split.hdu.edu.cn/showproblem.php?pid=5791 题意: 给出两个序列,求这两个序列的公共子序列的总个数. 思路: 和LCS差不多,dp[i][ ...
- Tomcat 跨域问题的解决
先下载CORS对应的Jar: 下载链接: https://download.csdn.net/download/u010739157/10565169 在tomcat的Web.xml中加上如下配置: ...
- 理解 Redis(7) - Set 值
unordered collection of unique strings.set值是唯一的字符串的无序集合, 把握住两个特点: 唯一, 无序. 清空所有的数据, 并清理显示界面: 127.0.0. ...
- layout_gravity与gravity的区别,和padding margin的区别
https://blog.csdn.net/github_39688629/article/details/77790541
- 日期时间函数 mysql 和sqlserver 中对于常用函数的日期和时间函数的区别
1. sqlserver中获取时间用getdate(),默认返回格式是2019-01-21 13:58:33.053,具体的年月日,时分秒毫米,年月日之间用短线连接,时分秒之间用冒号连接,秒和毫米之间 ...
- JavaSE 字符串和正则表达式
根据不懂的自己整理一下,跟着老师进度刷一遍课本,记录琐碎不懂知识 1.StringTokenizer类 String[] mess= {"整数部分","小数部分" ...