一、文件操作

在Python中,文件读写是最常见的操作。对文件的操作为:

  1. #1. 打开文件,得到文件句柄并赋值给一个变量
  2. f=open('a.txt','r',encoding='utf-8') #默认打开模式就为r
  3.  
  4. #2. 通过句柄对文件进行操作,f就是文件的句柄
  5. data=f.read()
  6.  
  7. #3. 关闭文件
  8. f.close()

操作系统打开该文件,并返回一个文件句柄给应用程序
应用程序将文件句柄赋值给变量f

二、文件的读写模式

文件的一般打开模式:

  1. 文件句柄 = open('文件路径', '模式')

需要注意的是,文件路径处应该填文件的相对路径,当程序所操作的文件对象与该程序在同一目录文件下时,可以直接用文件名。

要写入特定编码的文本文件,请给open()函数传入encoding参数,将字符串自动转换成指定编码。

文件的处理模式可以是以下方式以及他们之间的组合:

Character Meaning
‘r' open for reading (default)
‘w' open for writing, truncating the file first
‘a' open for writing, appending to the end of the file if it exists
‘b' binary mode
‘t' text mode (default)
‘+' open a disk file for updating (reading and writing)
‘U' universal newline mode (for backwards compatibility; should not be used in new code)
  1. #1. 打开文件的模式有(默认为文本模式):
  2. r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
  3. w,只写模式【不可读;不存在则创建;存在则清空内容】
  4. a 之追加写模式【不可读;不存在则创建;存在则只追加内容】
  5.  
  6. #2. 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)
  7. rb
  8. wb
  9. ab
  10. 注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
  11.  
  12. #3. 了解部分
  13. "+" 表示可以同时读写某个文件
  14. r+, 读写【可读,可写】
  15. w+,写读【可读,可写】
  16. a+, 写读【可读,可写】
  17.  
  18. x 只写模式【不可读;不存在则创建,存在则报错】
  19. x+ ,写读【可读,可写】
  20. xb

三、文件的操作方法

  1. #掌握
  2. f.read() #读取所有内容,光标移动到文件末尾
  3. f.readline() #读取一行内容,光标移动到第二行首部
  4. f.readlines() #读取每一行内容,存放于列表中
  5.  
  6. f.write('1111\n222\n') #针对文本模式的写,需要自己写换行符
  7. f.write('1111\n222\n'.encode('utf-8')) #针对b模式的写,需要自己写换行符
  8. f.writelines(['333\n','444\n']) #文件模式
  9. f.writelines([bytes('333\n',encoding='utf-8'),'444\n'.encode('utf-8')]) #b模式
  10.  
  11. #了解
  12. f.readable() #文件是否可读
  13. f.writable() #文件是否可读
  14. f.closed #文件是否关闭
  15. f.encoding #如果文件打开模式为b,则没有该属性
  16. f.flush() #立刻将文件内容从内存刷到硬盘
  17. f.name

注意:文件没有修改这一说,只能是新数据覆盖原数据

四、文件中的光标移动

1.read(3):

  1. 文件打开方式为文本模式时,代表读取3个字符

  2. 文件打开方式为b模式时,代表读取3个字节

2. 除read()以外,其余的文件内光标移动都是以字节为单位如seek,tell,truncate

注意:

  1. seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的

  2. truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果

Python进阶【第七篇】文件处理的更多相关文章

  1. 七丶人生苦短,我用python【第七篇】

    模块 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个 ...

  2. Python基础(七)——文件和异常

    1.1 读取整个文件 我们可以创建一个 test.txt 并写入一些内容,使用 Python 读文件操作,读出文本内容. with open(r'E:\test.txt') as file_objec ...

  3. 【python自动化第七篇:面向对象进阶】

    知识点概览: 静态方法,类方法,属性方法 类的特殊方法 反射 异常处理 socket开发基础 一.静态方法:@staticmethod 只是名义上归类管理,实际上在静态方法里访问不了类或者实例中的任何 ...

  4. Python【第七篇】面向对象进阶

    大纲 一.面向对象高级语法 1.静态方法.类方法.属性方法 2.类的特殊成员方法 3.反射 二.异常处理 三.网络编程之socket基础 一.面向对象高级语法 1.静态方法:名义上归类管理,实际上静态 ...

  5. python基础-第七篇-7.2面向对象(进阶篇)

    进入到今天的探索前,我先对上节内容进行一下回顾: 面向对象是一种编程方式,此编程方式的实现是基于对类和对象的使用 类是一个模板,模板中包装了多个函数可供使用 对象是基于类创建的,实例用于调用被包装在类 ...

  6. [Python笔记]第六篇:文件处理

    本篇主要内容:open文件处理函数的使用 open函数,该函数用于文件处理 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 文件句柄 = open('文件路径', '模式') 打 ...

  7. python进阶之路之文件处理

    Python之文件处理 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !imp ...

  8. python进阶--打包为exe文件

    一.Python打包为EXE文件有不少方案,比较常用的有下面两种方式: 1.使用py2exe 详细介绍:http://www.cnblogs.com/jans2002/archive/2006/09/ ...

  9. Python基础(七)-文件操作

    一.文件处理流程 1.打开文件,得到文件句柄赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 二.基本操作 f = open('zhuoge.txt') #打开文件 first_line = ...

  10. Python 学习 第七篇:函数1(定义、调用和变量的作用域)

    函数是把一些语句集合在一起的程序结构,用于把复杂的流程细分成不同的组件,能够减少代码的冗余.代码的复用和修改代码的代价. 函数可以0个.1个或多个参数,向函数传递参数,可以控制函数的流程.函数还可以返 ...

随机推荐

  1. JAVA基础——集合——ArrayList

    ArrayList集合 ArrayList的一些方法(JDK1.8): 将指定的元素附加到列表的末尾,true:添加成功,false:添加失败: public boolean add(E e)    ...

  2. throws和throw的区别

    throws是声明在方法上,告诉调用者这个方法可能会出现的问题.格式  :   方法()   throws  自定义异常类(异常类)    就是在这个方法里面会出问题时,new  throw时,    ...

  3. 112A

    #include <iostream> #include <string> #include <cctype> using namespace std; int m ...

  4. mosquitto SSL认证

    [11]MQTT mosquitto 双向SSL认证配置方式 [12]MQTT mosquitto 单向SSL认证的配置方式 Mosquitto服务器的搭建以及SSL/TLS安全通信配置(比较可信) ...

  5. Python的Numpy库简述

    numpy 是 python 的科学计算库import numpy as np 1.使用numpy读取txt文件 # dtype = "str":指定数据格式 # delimite ...

  6. Github Pages 搭建网站

    参考网站: https://pages.github.com/ http://gitbeijing.com/pages.html 搬进github:http://gitbeijing.com

  7. 家庭记账本之Github账号注册与安装(二)

    好多程序猿都在使用github用来存放自己的代码:但是如果仅仅用github的web版本的话:有一些功能还是需要使用git客户端工具才能操作的: 那么今天将指导大家如何安装GitHub for win ...

  8. end to end

    深度学习中的end to end是什么意思? 端到端就是输入一个数据进入模型,然后模型直接可以输出你想要的结果,也就是一体性. 简单讲就是,Input--->系统(这里指神经网络)---> ...

  9. Java之网络编程

    1.网络编程的基本概念 1.1 网络的概念 网络:一组相互连接的计算机,多台计算机组成,使用物理线路进行连接 1.2 网络连接的功能 1.3 网络编程的三要素 1) IP 地址:唯一标识网络上的每一台 ...

  10. js字符串三个编码的区别

    1.escape():编码目的为了防止字符串中特殊字符造成运算错误,主要在字符串运算中使用: 不进行编码的69个字符:A-Z.a-z.0-9.@.*._.+.-...\. 2.encodeURI(): ...