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是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直 ...
随机推荐
- Java中 System.arraycopy() 和 Arrays.copyOf()方法
System.arraycopy() 和 Arrays.copyOf()方法 阅读源码的话,我们就会发现 ArrayList 中大量调用了这两个方法.比如:我们上面讲的扩容操作以及add(int in ...
- C# winfrom 当前程序内存读取和控制
https://zhidao.baidu.com/question/31914620.html https://www.cnblogs.com/xcsn/p/4678322.html Process ...
- 论文笔记:Parallel Tracking and Verifying: A Framework for Real-Time and High Accuracy Visual Tracking
Parallel Tracking and Verifying: A Framework for Real-Time and High Accuracy Visual Tracking 本文目标在于 ...
- 并发学习一、MPI初步认识
学习参考地址:https://www.jianshu.com/p/2fd31665e816 编程使用的vs2015 社区版本(个人感觉比Vc6.0的丑界面看起来舒服多了) MPI基本函数 MPI调用借 ...
- Latex 三线表及设置列数
参考: latex的三线表格及一些错误的修改 latex 三线表 Latex 三线表 及设置列数 绘制三线表: \begin{table}[htbp] \caption{\label{tab:test ...
- 8、nginx和tengine简介
练习: 使用nginx反向代理(rr调度)用户请求至两个以上的后端LAMP(按标准路径部署的有pma,wd),不管用户请求是什么内容都反向代理至后端服务器去,但是如果用户请求的是图片或者是html,就 ...
- C#接口的作用详解
.C#接口的作用 : C#接口是一个让很多初学C#者容易迷糊的东西,用起来好像很简单,定义接口,里面包含方法,但没有方法具体实现的代码,然后在继承该接口的类里面要实现接口的所有方法的代码,但没有真正认 ...
- Go 结构体(Struct)
引用曾经看到的一篇文章里面对 Golang 中结构体的描述,如果说 Golang 的基础类型是原子,那么 结构体就是分子.我们都知道分子是由原子组成的,换言之就是结构体里面可以包含基础类型.切片. 字 ...
- Linux命令之rz命令与sz命令
1.rz命令 rz命令(Receive ZMODEM),使用ZMODEM协议,将本地文件批量上传到远程Linux/Unix服务器,注意不能上传文件夹. 当我们使用虚拟终端软件,如Xshell.Secu ...
- JavaScript基本内容
注释: /*多行 注释*/ //单行注释 变量: //变量均为对象,常用类型:String.Number.Boolean.Array.Object var value = "hello&qu ...