Python|文件读写

数据山谷 2021-01-22 10:44:50
Python 腾讯云 文件 读写


这回小栗给大家科普的是关于文件读写的知识,我们也可以用python进行文件的读取哦!

01

概述

Python中内置了文件读写的功能 核心:读写文件其实请求操作系统打开一个文件对象【文件描述符】

02

读文件

步骤: a.打开文件:open() b.读取文件内容:read() c.关闭文件:close() 注意:文件使用完毕之后一定要记得关闭,因为文件对象会占用操作系统的系统资源,并且操作系统在同一个时间段内打开文件的个数是有限制,为了避免资源的浪费。

为了让大家理解,以下我们来讲解一下具体的参数:

"""
open(path,flag,[encoding,errors])
path:文件的路径【绝对路径和相对路径】
flag:打开文件的方式
r:只读
rb:以二进制格式打开文件,只读
r+:读写
w:只用于写入
wb:以二进制格式写入文件,如果该文件已经存在则覆盖,如果不存在则创建新的文件
w+:读写
a:append,如果一个文件中已经有内容存在,则会将新的内容追加到原有内容的后面
encoding:编码格式,utf-8,gbk
errors:错误处理
"""

一、打开文件

path = "C:/Users/jiejie/Desktop/致橡树.txt"
#r:用只读的方式打开文件
f = open(path,"r",encoding="gbk")
"""
注意1:当以r的形式打开文件时:
如果文件格式时gbk的,可以不加encoding = "gbk"
如果文件格式为utf-8,必须加encoding = "utf-8"
注意2:二进制格式一般用来处理图片,视频,音频
如果文件以rb或者wb的形式打开的话,不能添加encoding,会报错
encode():编码
decode():解码
"""

二、读取文件

#1.读取全部内容 ************
str = f.read()
print(str)
#2.读取指定的字符数
#如果每一行结尾有个"\n"符号,也被认为是字符
str1 = f.read(2)
print(str1)
#3.读取整行,不管该行有多少个字符 **********
#调用一次读取一行,读完一行,则操作文件的光标移动到下一行的开头
str2 = f.readline()
print(str2)
str2 = f.readline(3) #读取一行中的3个字符
print(str2)
#4.将所有的内容全部读取出来,返回一个列表,每一行的数据为一个元素
result = f.readlines()
print(result)
三、关闭文件
f.close()
接下来简单应用一下,简写:
path = "致橡树.txt"
#简写方式
#好处:执行完操作之后不需要手动close,避免忘记关闭文件导致资源的浪费
with open(path,"r",encoding="gbk") as f:
result = f.read()
print(result)
try:
f1 = open(path,"r",encoding="gbk")
print(f1.read())
except FileNotFoundError as e:
print("文件不存在",e)
except LookupError as e:
print("指定了未知的编码")
except UnicodeDecodeError as e:
print("读取文件解码错误",e)
finally:
if f1:
f1.close()

03

写文件

步骤: a.打开文件 b.将信息写入缓存 c.刷新文件内部缓冲【提高写入的效率】 d.关闭文件 注意:如果要写内容的文件不存在的话,会自动创建一个文件

path = "file11.txt"
#1.打开文件
f = open(path,"w",encoding="utf-8")
#2.写入内容,将内容写入到缓冲区
f.write("Whatever is worth doing is worth doing well该行很骄傲很关键")
#3.刷新缓冲区【加速数据的流动,保证缓冲区的流畅】
f.flush()
#4.关闭文件
f.close()
简写方式:可以不用手动调用close
with open(path,"w",encoding="utf-8") as f1:
f.write("Whatever is worth doing is worth doing well该行很骄傲很关键")

04

编码和解码

字符串类型和字节类型转换过程 字符串类型转换为字节类型:编码,encode 字节类型转换为字符串类型:解码,decode

str = "今天是个好日子 today is a good day"
path = "C:/Users/jiejie/Desktop/file22.txt"
with open(path,"wb") as f:
result = str.encode("utf-8")
print(result)
f.write(result)
with open(path,"rb") as f1:
data = f1.read()
print(data)
print(type(data))
newData = data.decode("utf-8")
print(newData)
print(type(newData))

05

练习:拷贝文件

需求:实现文件内容的拷贝 思路: 源文件:读出来 目标文件:写入到

import os
def myCopy(srcPath,desPath):
#1.判断源文件是否存在
if not os.path.exists(srcPath):
print("哥们,文件不存在,别拷贝了")
return
#2.判断源文件是否是文件类型
if not os.path.isfile(srcPath):
print("不是文件,无法拷贝")
return
#3.打开源文件和目标文件
srcFile = open(srcPath,"rb")
desFile = open(desPath,"wb")
#4.获取源文件的大小
size = os.path.getsize(srcPath)
while size > 0:
#读取
content = srcFile.read(1024)
#写入
desFile.write(content)
size -= 1024
#5.关闭文件
srcFile.close()
desFile.close()
myCopy("file11.txt","file22.txt")

总结:以上我们讲解了文件读写的知识点,读文件,写文件,以及关于各种参数,文件的编码和解码,最后有文件内容的拷贝,大家感兴趣的可以按着去操作一下哦!欢迎和大家进行探讨~~~

1

今天分享的内容就到这里啦~欢迎大家一起来探讨~~~

本文分享自微信公众号 - 数据山谷(BigDataValley)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间: 2021-01-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

版权声明
本文为[数据山谷]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1778053

  1. 前后端分离有什么了不起,手把手教你用Python爬下来!
  2. 在 Azure 上执行一些简单的 python 工作
  3. 推荐 :利用Python的混合集成机器学习(附链接)
  4. Cunning or orthodox Kung Fu? The most complete usage of Python derivation
  5. It's estimated that 80% of pandas people have to hang up!
  6. What's so great about the separation of front and rear ends? Hand in hand teach you to climb down with Python!
  7. Doing some simple Python work on azure
  8. Recommendation: hybrid integrated machine learning using python (link attached)
  9. Learning PPO algorithm programming from scratch (Python version)
  10. Python OpenCV 图片模糊操作 blur 与 medianBlur
  11. Python OpenCV image blur operation blur and mediablur
  12. 成功解决cv2.error: OpenCV(4.1.2) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: err
  13. Cv2.error solved successfully: opencv (4.1.2) C:: (projects / opencv Python / opencv modules / imgproc / SRC)\ color.cpp:182 : err
  14. Python 中使用 virtualenv 管理虚拟环境
  15. Using virtualenv to manage virtual environment in Python
  16. 如何使用Python执行系统命令?Python学习教程!
  17. How to use Python to execute system commands? Python tutorial!
  18. 快速掌握Python中的循环技术
  19. Quickly grasp the loop technology in Python
  20. Python主流Web框架之Tornado
  21. appium+python自动化63-使用Uiautomator2报错问题解决
  22. Tornado: the mainstream Python Web Framework
  23. Appium + Python automation 63 - using uiautomator2 to solve the problem of error reporting
  24. 爬虫+django,打造个性化API接口
  25. Crawler + Django to create personalized API interface
  26. 爬虫+django,打造个性化API接口
  27. Crawler + Django to create personalized API interface
  28. C、C++、Java、PHP、Python主要应用在哪里方面?
  29. C. Where are the main applications of C + +, Java, PHP and python?
  30. Python 无限级分类树状结构生成算法 「实用代码」
  31. Python infinite classification tree structure generation algorithm "practical code"
  32. 【Azure 存储服务】Python模块(azure.cosmosdb.table)直接对表存储(Storage Account Table)做操作示例
  33. [azure storage service] Python module( azure.cosmosdb.table )Direct operation example of storage account table
  34. 【Azure 存储服务】Python模块(azure.cosmosdb.table)直接对表存储(Storage Account Table)做操作示例
  35. [azure storage service] Python module( azure.cosmosdb.table )Direct operation example of storage account table
  36. openpose c++ 配置教程 + python api
  37. Openpose C + + configuration tutorial + Python API
  38. PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二手急速响应捡垃圾平台_3(附源码持续更新)
  39. 使用python javaSerializationTools模块拼接生成 8u20 Gadget
  40. 萌新入门之python基础语法
  41. python中hmac模块的使用
  42. Python crawler_ Garbage man idle fish crawler turn crawler data integration self use second hand rapid response garbage collection platform_ 3 (with continuous source update)
  43. Using Python javaserialization tools module to generate 8u20 gadget
  44. The basic syntax of Python
  45. The use of HMAC module in Python
  46. 攻防世界web进阶区Web_python_block_chain详解
  47. Attack and defense world web advanced zone Web_ python_ block_ Details of chain
  48. pandas DataFrame的新增行列,修改、删除、筛选、判断元素以及转置操作
  49. Add rows and columns, modify, delete, filter, judge elements and transpose operations in pandas dataframe
  50. pandas DataFrame的新增行列,修改、删除、筛选、判断元素以及转置操作
  51. Add rows and columns, modify, delete, filter, judge elements and transpose operations in pandas dataframe
  52. 虚言妙诀终虚见,面试躬行是致知,Python技术面试策略与技巧实战记录
  53. The interview practice is knowledge, python technology interview strategy and skills of the actual record
  54. 用tqdm和rich为固定路径和目标的python算法代码实现进度条
  55. Using tqdm and rich as the fixed path and target of Python algorithm code to realize the progress bar
  56. 我来记笔记啦-Django开发流程与配置
  57. Let me take notes - Django development process and configuration
  58. python数据类型的强制转换
  59. Django报错:'Key 'id' not found in 'xxx'. Choices are: xxx'
  60. Python400集大型视频,从正确的方向出发学习,全套完整送给大家