前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加下Python快乐交流群:1136201545

1.概述

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

2.读文件

步骤:
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() 

3.写文件

步骤:
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该行很骄傲很关键") 

4.编码和解码

字符串类型和字节类型转换过程
字符串类型转换为字节类型:编码,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)) 

5.练习:拷贝文件

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

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") 

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

标签:

解读Python的文件读写的更多相关文章

  1. python中编写函数并调用的知识点总结

    能够调用自己编写的函数,这在很多开发语言中,都会用到一个叫做mian的主函数,这个函数一般都是程序的入口,当程序启动时,首先执行这个函数。在Python中,main函数的主要作用就是你写的模块既可以导入到别的模块中用,也可以在模块本身执行使用。下面就来了解具体使用操作吧。编写简单的函数并调用:def......

  2. python 窃取摄像头照片的实现示例

    python窃取摄像头照片源码+获取授权码方法+py打包成exe教你用python做一个属于自己的窃取摄像头照片的软件。需要安装python3.5以上版本,在官网下载即可。然后安装库opencv-python,安装方式为打开终端输入命令行。可以在使用pip的时候加参数-i http://pypi.t......

  3. Python3利用scapy局域网实现自动多线程arp扫描功能

    一、所需Python库from scapy.all import *import threading二、实现ip扫描1.获取c段ip地址在ARP()里面有ip地址,我们可以从里面提取出前3段出来ARP().show()然后通过从后查找最后一个.得到最后一段位数,然后总长度-最后一段长度就能取出前3段......

  4. Python学习(3) (变量的基本使用、定义、类型、计算、类型转换、输入输出、命名)

    Python学习(3)一、python变量的定义二、pycharm单步执行查看变量值三、python变量的类型四、python变量间的计算五、python变量的输入输出1. input 函数用法2. 类型转换函数3. 变量的格式化输出六、python变量的命名1.标识符2.关键字3.变量的命名规则程......

  5. Python 元类

    本文通过Python实现单例模式一步步理解元类。印象中,是在创建单例模式时知道可以用到元类(metaclass),但始终对其了解的不是很透彻,很多人也都说元类是Python中较难理解的概念之一,于是找来几本书,希望可以找到答案,本文以Python3为例。本文参考:《人人都懂设计模式》《Python ......

  6. Python 有可能删除 GIL 吗?

    我们知道,在 CPython 中,有一个全局解释器锁,英文叫 global interpreter lock,简称 GIL,是一个互斥锁,用来保护 Python 世界里的对象,防止同一时刻多个线程执行 Python 的字节码,从而确保线程安全,这导致了 Python 的线程无法利用多核 CPU 的优......

  7. 详解Pymongo常用查询方法总结

    Python 直接连接mongodb数据库进行查询操作1、安装所需模块使用到的是pymongo模块,安装方法:pip install pymongo2、环境验证3、连接数据库import pymongodef operating_mongodb():client = pymongo.MongoC......

  8. Python学习(2) (代码运行的常见错误、python解释器、注释方法、算数运算符)

    Python学习(2)一、python代码运行的常见错误二、python解释器三、python注释方法1.注释的作用2.单行注释(行注释)3.多行注释(块注释)四、python的算数运算符1.算数运算符2.算数运算符的优先级一、python代码运行的常见错误1.手误。例如:pirnt(“hi wor......

  9. Python 学习笔记(1)

    Mac下载安装Pythonmac 系统自带有python 。但就最新的mac系统而言,它自带的python版本为2.*版本。虽然不影响对于老python项目的运行,但3.*版本中很多语法都发生了改变,为了方便后面的学习和使用还是最新版本会好一点1. 查看mac系统自带的pythonmac自带pyth......

  10. 浅析python字符串前加r、f、u、l 的区别

    先给大家介绍下Python 字符串前面加u,r,b,f的含义(字符串前缀)1、字符串前加 u例:u"我是含有中文字符组成的字符串。"作用:后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。2、字符串前加 r例:......

随机推荐

  1. Java Object类 和 String类 常见问答

    Java常见对象 Object类 和 String类 常见问答 6k字+总结写在最前面这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解。所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项目,专注 Java 后端面......

  2. .Net技术栈下的异步,你还在用同步方式进行开发吗?

    关于异步,其实是个老生常谈的话题,也是各大公司面试常问的问题之一.本文就几个点来介绍异步解决的问题注:对多线程的运行的基本机制要了解1、介绍有人可能会有疑问,为什么并行,非得用异步.多线程也已可以啊,多开两个线程不就行了.案例分析:现在有一个生活场景.需要煮饭(假设需要20分钟-机器煮)、洗衣服(假......

  3. 前后端(PHP)使用AES对称加密

    前端代码:// 这个是加密用的 function encrypt(text){ var key = CryptoJS.enc.Utf8.parse('1234567890654321'); //为了避免补位,直接用16位的秘钥 var iv = CryptoJS.enc.Utf8.parse('12......

  4. python画图时设置分辨率和画布大小的实现(plt.figure())

    本文介绍了python画图时设置分辨率和画布大小的实现,主要使用plt.figure(),下面就一起来了解一下plt.figure()示例:?12345678910111213import numpy as npimport pandas as pdimport warningswarnings.f......

  5. python用700行代码实现http客户端

    本文用python在TCP的基础上实现一个HTTP客户端, 该客户端能够复用TCP连接, 使用HTTP1.1协议.一. 创建HTTP请求HTTP是基于TCP连接的, 它的请求报文格式如下:因此, 我们只需要创建一个到服务器的TCP连接, 然后按照上面的格式写好报文并发给服务器, 就实现了一个HTTP......

  6. C# AE之返回上一级和下一级的实战操作

    我就废话不多说了,大家还是直接看代码吧~try{//判断是否可以返回上一视图if (mapControl.ActiveView.ExtentStack.CanUndo()){//执行操作mapControl.ActiveView.ExtentStack.Undo();//刷新mapControl.R......

  7. js中this指向的问题与联系深入探究

    前言JavaScript 中最大的一个安全问题,也是最令人困惑的一个问题,就是在某些情况下this的值是如何确定的。有js基础的同学面对这个问题基本可以想到:this的指向和函数调用的方式相关。这当然是正确的,然而,这几种方式有什么联系吗?这是我接下来要说明的问题。this从哪里来this 是js的......

  8. Socket.IO基础教程

    什么是Socket.IOSocket.IO是一个库,可用于在浏览器和服务器之间进行实时,双向和基于事件的通信。它包括:使Node.js服务器:来源 | API为浏览器(可从Node.js的也运行)一个JavaScript客户端库:来源 | API其主要特点是:可靠性即使存在以下情况,也会建立连接:代......

  9. Nginx中break与last的区别详析

    先说区别last,重写后的规则,会继续用重写后的值去匹配下面的location。break,重写后的规则,不会去匹配下面的location。使用新的规则,直接发起一次http请求了。Nginx 配置文件server {listen 88;server_name _;location /break {......

  10. std::async的使用总结

    C++98标准中并没有线程库的存在,直到C++11中才终于提供了多线程的标准库,提供了管理线程、保护共享数据、线程间同步操作、原子操作等类。多线程库对应的头文件是#include ,类名为std::thread。然而线程毕竟是比较贴近系统的东西,使用起来仍然不是很方便,特别是线程同步及获取线程运行结......