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是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直 ...
随机推荐
- 【做题】Codeforces Round #429 (Div. 2) E. On the Bench——组合问题+dp
题目大意是给你n个数,求相邻两数相乘不是完全平方数的排列数. 一开始看到这题的时候,本人便想给相乘为完全平方数的数对建边,然后就写萎了... 后来通过集体智慧发现这个重要性质:对于自然数a,b,c,若 ...
- Elasticsearch-->Get Started-->Modifying Your Data
https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started-modify-data.html Mod ...
- 用RAR将多个文件夹一次性压缩为多个对应zip文件
选中要压缩的所有文件夹.右键,选“添加到压缩文件...”,弹出的菜单如下图: 点击菜单栏“文件”.在“把每个文件都单独压缩文件中”选中,才可以单独创建压缩.如下图
- printf和cout的区别详述
https://blog.csdn.net/ysayk/article/details/50959909
- BZOJ 1061: [Noi2008]志愿者招募(线性规划与网络流)
http://www.lydsy.com/JudgeOnline/problem.php?id=1061 题意: 思路: 直接放上大神的建模过程!!!(https://www.byvoid.com/z ...
- UVa 11107 生命的形式(不小于k个字符串中的最长子串)
https://vjudge.net/problem/UVA-11107 题意:给定n个字符串,求出现在不小于n的一半个字符串的最长子串,如果有多个,则按字典序输出. 思路: 首先就是将这n个字符串连 ...
- springboot整合druid数据库连接池并开启监控
简介 Druid是一个关系型数据库连接池,它是阿里巴巴的一个开源项目.Druid支持所有JDBC兼容的数据库,包括Oracle.MySQL.Derby.PostgreSQL.SQL Server.H2 ...
- 原创:R包制作--windows
1.下载安装Rtools,添加环境变量: 打开R,分别输入下面指令,看有无包错: system('g++ -v') system('where make') 2.package.skeleton()函 ...
- 【BZOJ】3573: [Hnoi2014]米特运输
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3573 屁话一堆,就是说: 1.一棵树中的每个点的每个儿子的权值之和要等于这个点的权值 2. ...
- 启动tomcat 报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
[root@localhost META-INF]# systemctl start tomcat Job for tomcat.service failed because the control ...