Python文件操作

前言:在使用Python对文件进行操作时,需要先了解绝对路径和相对路径。
绝对路径:指的是从磁盘根目录到文件名,或者网上的一个完整的网络地址。例:“D:\Program Files\Tencent\QQ\Bin\QQScLauncher.exe”,https://www.baidu.com/
相对路径:指的是以当前正在处理的文件为基本路径进行操作。…/表示当前文件的上一层文件夹,…/…/表示当前文件的上上层文件夹。例:当前文件路径为:D:\Program Files\Tencent\123.txt,要获取D:\Program Files\456.txt,可以用"…/456.txt"路径表示。
tips:建议使用相对路径,因为在把我们的项目打包发送给别人时,别人直接就能运行。而如果使用绝对路径,那么还要额外发送外部的文件。

一、文件操作介绍

使⽤Python来读写⽂件是非常简单的操作. 我们使⽤open()函数来打开⼀个⽂件, 获取到⽂
件句柄. 然后通过⽂件句柄就可以进⾏各种各样的操作了. 根据打开⽅式的不同能够执⾏的操
作也会有相应的差异.
打开⽂件的⽅式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 默认使⽤的是r(只读)模式

二、读操作(r,rb)

f = open(file_path, mode = "r", enoding="utf-8")
content = f.read()
f.close()
print(content)#file_path:文件路径,可使用绝对路径也可使用相对路径
#mode:指定对文件进行的操作
#encoding:解码(读)或者编码(写)的格式,一般大多数都是采用utf-8格式
#close():释放文件句柄
#还可以这样写
with open(file_path, mode="r", encoding="utf-8") as f:content = f.read()print(content)
这样写会在执行完成之后自动释放文件句柄,不需要自己手动释放
f = open(file_path, mode = "rb")
content = f.read()
f.close()
print(content)

#因为rb读取出来之后的数据是bytes类型,即就是字节,所以我们在使用rb时可以不用指定encoding。
rb的作⽤: 在读取非⽂本⽂件的时候,比如读取MP3、图像、 视频等信息的时候就需要⽤到rb。 因为这种数据是没办法直接显⽰出来的,还有,我们看的直播, 实际上都是这种数据。

读取文件的方法

read():将文件里的内容全部读取出来。弊端:如果文件内容数据过大,读取时将会非常占用内存且非常缓慢,严重会导致内存崩溃。

f = open("file/userinfo", mode="r", encoding="utf-8")
content = f.read()
f.close()
print(content)# dogfa_111111
oldwang_123456
dajiba_dajiba
caoduanjie_111111
oldniu_1332611346

read(n):一次读取n个字符。需要注意的是,如果你已经进行了读取操作,那么下一次读取将会从光标定位处继续读取,即上次读取完的位置。rb读取出来的是字节。

f = open("file/userinfo", mode="r", encoding="utf-8")
content = f.read(5)
content2 = f.read(5)
f.close()
print(content)
print(content2)#dogfa
#_1111

readline():一次读取一行数据。需要注意的是,每次读取出来的数据末尾都会有\n,所以我们可以使用strip()来清除\n

f = open("file/userinfo", mode="r", encoding="utf-8")
content = f.readline()
content2 = f.readline()
f.close()
print(content)
print(content2)#dogfa_111111
#oldwang_123456

readlines():读取所有数据,将每一行数据形成一个元素放在一个列表中。弊端:和read()一样,都是全部将数据读取出来,容易导致内存崩溃。

f = open("file/userinfo", mode="r", encoding="utf-8")
content = f.readlines()
print(content)
for line in content:print(line)
f.close()#['dogfa_111111\n', 'oldwang_123456\n', 'dajiba_dajiba\n', 'caoduanjie_111111\n', 'oldniu_1332611346\n']
#dogfa_111111
#oldwang_123456
#dajiba_dajiba
#caoduanjie_111111
#oldniu_1332611346

循环读取:for line in f: pass。优点:循环一次读取一行,不会产生内存突然溢出崩溃这种情况。(建议使用)

f = open("file/userinfo", mode="r", encoding="utf-8")
for line in f:print(line)
f.close()#dogfa_111111
#oldwang_123456
#dajiba_dajiba
#caoduanjie_111111
#oldniu_1332611346

三、写操作(w,wb)

写的时候注意。 如果没有⽂件,则会创建⽂件。 如果⽂件存在, 则将原件中原来的内容删除, 再写入新内容。

f = open("file/dog", mode = "w", encoding="utf-8")
f.write("看我这条blog的你真帅!")
f.flush()
f.close()
f = open("file/dog", mode = "wb")
f.write("看我这条blog的你真帅!".encode("utf-8"))    #使用wb模式写入时,不需要指定文件的编码格式,但是在将内容写入时,要将内容转换成对应格式的bytes类型
f.flush()
f.close()

四、追加操作(a,ab)

在追加模式下,我们写入的内容会追加在⽂件的结尾。

f = open("file/dog", mode = "a", encoding="utf-8")
f.write("你是最靓的仔")
f.flush()
f.close()
五、读写操作(r+,r+b)
在读写操作模式下,必须先进行读操作,再进行写操作,因为光标默认是在开头的,读取会默认从头开始读到尾,在开始写。
正常读写
f = open("file/dog", mode = "r+", encoding="utf-8")
content = f.read()
f.write("哈哈哈")
f.flush()
f.close()
错误读写
f = open("file/dog", mode = "r+", encoding="utf-8")
f.write("哈哈哈")
content = f.read()
f.flush()
f.close()
开头前三个字将会被“哈哈哈”替换,然后读取的内容也是从第三个字之后开始读取。

核能警告:在r+模式下,如果你读取了内容,不管你读取了多少内容,光标定位在何处,后面的写操作都将追加在文件内容末尾。如果你没有先进行读取操作而是先进行了写操作,那么写操作会将写入的内容替换掉开头对应长度的内容。

六、写读操作(w+,w+b)
在写读模式下,先将内容清空,然后写入内容。在进行读操作时,因为在进行写操作时光标已定位在末尾,所以读取不到任何内容。所以写读模式不常使用。

f = open("file/dog", mode = "w+", encoding="utf-8")
f.write("哈哈哈")
content = f.read()
f.flush()
f.close()
print(content)  # ""

#为什么不能先进行读操作在进行写操作?
#因为在w+模式下,先进行读操作是读不出来任何数据的,然后在进行写数据,又是将内容清空写入。所以无论是先读后写还是先写后读都是一样的结果。

七、追加读写操作(a+,a+b)

在a+操作时,无论是先进行读操作还是后进行读操作都无法读取到数据,因为光标始终定位在文件内容末尾处。

f = open("file/dog", mode = "a+", encoding="utf-8")
f.write("写了也读不出来")
content = f.read()
f.flush()
f.close()
print(content)

八、其它相关操作

seek(n, type):光标移动到n个字节位置,因为我们大部分是采用utf-8的编码格式,所以一般n取得都是3的倍数。
seek()第一个参数指移动的字节数。
seek()第二个参数指的是从哪个位置进行偏移。取值可以是0,1,2。默认是0。
0:指相对开头偏移
1:指相对本身位置进行偏移
2:指相对结尾偏移
开头:seek(0)
结尾:seek(0, 2)
tell():帮助我们获取当前光标位置,返回的值也是以字节为单位进行度量的。

truncate():截断文件

f = open("⼩娃娃", mode="w", encoding="utf-8")
f.write("哈哈") # 写⼊两个字符
f.seek(3) # 光标移动到3, 也就是两个字中间
f.truncate() # 删掉光标后⾯的所有内容
f.close()
做截断操作之前,要先挪动光标,挪动到你想要截断的位置, 然后再进⾏截断。关于truncate(n), 如果给出了n, 则从开头开头进⾏截断, 如果不给n, 则从当前位置截断, 后⾯的内容将会被删除。

九、修改文件

⽂件修改: 只能将⽂件中的内容先读取出来, 将信息修改完毕, 然后将源⽂件删除,将新⽂件的名字改成老⽂件的名字。

#文件修改
import os
with open("file/dog", mode="r", encoding="utf-8") as f1, open("file/dog_new", mode="w", encoding="utf-8") as f2:for line in f1:line_new = line.replace("哈", "嘻")f2.write(line_new)os.remove("file/dog")
os.rename("file/dog_new", "file/dog")

案例 bs4 爬百度贴吧图片

# 安装的方法很简单, cmd 执行pip install beautifulsoup4
from bs4 import BeautifulSoup
import requests
# 爬取目标网页
html = requests.get("https://tieba.baidu.com/p/6021111523")
html = html.text
# 解析网页
result = BeautifulSoup(html, 'html.parser')#获取所有的图片img
result_imgs  =  result.find_all("img",class_= "BDE_Image")
print(result_imgs)
i = 1   #计数器
for result_img in result_imgs:# 获取链接img_url=result_img['src']    # pyhon中的字典# 获取文件result_img_content = requests.get(img_url).contentfile_name = str(i)+'.jpg'# 保存图片with open(file_name,'wb') as wf:wf.write(result_img_content)#i+= 1  # i=i+1与i+=1意思相同i=i+1

Python File文件方法操作open()相关推荐

  1. Python File(文件) 方法

    Python File(文件) 方法 open() 方法 Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OS ...

  2. Python File(文件) 方法

    open() 方法 Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError. 注意:使用 open() ...

  3. 打开python文件式_Python File(文件) 方法

    Python File(文件) 方法 open() 方法 Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OS ...

  4. python36_第36 p,就这几个方法,Python中文件的操作

    大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第X篇文章,第二阶段的课程:Python基础知识:Python中文件的操作(下篇). 学习本课程,建议先看一遍:[计算机基础知识]课 ...

  5. Python file read方法:读取文件

    目录 描述 语法 参数 返回值 使用示例 1. size省略,一次性读完整个文件 2. 指定字节数读取文件 注意事项: 1.  size为负时 2. size为0时 为何要使用Size? 描述 rea ...

  6. python之file文件写入操作

    视频地址: python之file文件写入操作 更多精彩内容,敬请扫码关注(HelloWorld小码农):

  7. python File write()方法

    参考文章1:Python File write() 方法 参考文章2:Python中文件的读取和写入操作 参考文章3:python File open()方法

  8. python对文件的操作都有什么_python中文件操作的相关内容总结(附示例)

    本篇文章给大家带来的内容是关于python中文件操作的相关内容总结(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1. 文件操作介绍 说到操作文件我们肯定会想到流,文件的操 ...

  9. Day6 python对文件的操作——百度飞桨领航团零基础Python入门

    python文件操作 前言 一.JSON是什么? 二.python对文件的操作 1.写入文件内容 2.打开.读取.关闭文件 文件数据若有问题采用两种解决方式 file对象的函数列表 写入文件内容 对象 ...

  10. Python从入门到入土-Python3 File(文件) 方法

    本文就利用Python 内构函数来对文件进行操作的方法 直接看demo.py # 练习如何写入文件 text = "Sample Text to Save \nNew Line" ...

最新文章

  1. vue组件的传参练习
  2. bat批处理文件启动Eclipse和ivy本地仓库的配置
  3. 当前流行的J2EE WEB应用架构分析
  4. LeetCode之Sqrt(x)
  5. Total commander 之F3 图片
  6. 西门子S7系列中间人攻击:防御和流量异常检测(三)
  7. java smali_Android逆向——smali复杂类解析
  8. 谷歌浏览器好用的复制粘贴插件_Chrome粘贴插件:将其粘贴
  9. 微信公众开发 表情开发php,微信公众帐号开发教程第9篇-QQ表情的发送与接收_PHP教程...
  10. 《MGMatting:Mask Guided Matting via Progressive Refinement Network》论文笔记
  11. 远场(far-field)语音识别的主流技术有哪些
  12. 优力优磁性照片墙,让家有吸引力 !
  13. 2021-08-05 Vue+D3实现一个动态的流程图
  14. 【语义地图】Ubuntu18.04 Suma++代码配置运行
  15. Hi3519音频单声道改双声道
  16. 自定义Camera系列之:SurfaceView + Camera2
  17. JS方法参数设置为默认值的几种方式
  18. EAN-13 条码生成
  19. 各数据库导入/导出Access教程--图解
  20. QCSG1205031通信协议的研究与模拟服务器开发

热门文章

  1. 指标公式c语言源码下载,通达信最全指标公式源码,给大家分享实用的技术指标...
  2. DIP 电源跌落瞬时中断(Voltage dips)
  3. 身份证OCR识别SDK
  4. iOS视频直播初窥:高仿喵播APP
  5. 短信接口防盗刷解决方案
  6. PubMed插件神器之PubMedy和Scholarscope(末尾附赠Google截屏神器)
  7. 下载Eclipse IDE
  8. ubuntu 16.04/14.04 ORK 在 Kinect v2和 Kinect v1的安装(物体位姿估计)
  9. jpg格式怎么免费压缩大小
  10. markdown来写API接口文档