Python内置了读写文件的函数,用法和C是兼容的。本节介绍内容大致有:文件的打开/关闭、文件对象、文件的读写等。

本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件读写,也需要注意编码问题;其他文件的读写及编码相关详见专题的博文。

open()   close()     with open(...) as ...

看以下示例就能了解 Python 的 open() 及 close() 函数。这边调用 read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示,具体使用参见下文。

在 E 盘 python_file 文件夹下新建一 a.txt,输入随意,如下:

Python 操作 打开及关闭方式 如下:

注意 open() 之后 一定要 close()。但由于文件读写时都可能产生IOError,为了保证无论是否出错都能正确地关闭文件,我们用 try ... finally 来实现:

python 简化了改写法,即用 with open(...) as ...  ; 建议之后文件读写都用该写法:

上面,你肯定注意到了参数 "r";该参数决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

模式描述

r

以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

rb

以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

r+

打开一个文件用于读写。文件指针将会放在文件的开头。

rb+

以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

w

打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb

以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

w+

打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb+

以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a

打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+

打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

File 对象

file 为一对象,它有一些内置属性,如下

文件对象属性描 述

file.closed

表示文件已经被关闭,否则为False

file.mode

Access文件打开时使用的访问模式

file.encoding

文件所使用的编码

file.name

文件名

file.newlines

未读取到行分隔符时为None,只有一种行分隔符时为一个字符串,当文件有多种类型的行结束符时,则为一个包含所有当前所遇到的行结束的列表

file.softspace

为0表示在输出一数据后,要加上一个空格符,1表示不加。这个属性一般程序员用不着,由程序内部使用

read()    read(size)   readline()   readlines()

之前的例子已经接触到了 read() 函数,该函数会会一次性读取文件的全部内容,如果能确保文件的大小,自然可以。但若文件过大,内存就爆了,所以,可以反复调用read(size)方法,每次最多读取size个字节的内容;也可调用 readline() 每次读取一行内容;而调用readlines()可以一次读取所有内容并按行返回list。总之,根据需求来。仅以 txt 文件为例,其他的文件读取需要特殊处理;另外,文件的格式编码方式也需要注意;这边仅介绍读取方法,其他的会出专题来学习。

在D:\python_file 下新建 poet.txt;示例如下,由于一个中文会占多个字节,故read(size) 部分会乱码,如:

write()

写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符'w'或者'wb'表示写文本文件或写二进制文件;'a' 对应的表示追加等。

如下示例,由于 write.txt 文件不存在,创建该文件并写入:

在上例基础上,继续,该文件被重写:

继续,这次使用追加,会在文件结尾追加:

python中with open as f什么意思_Python中 with open(file_abs,'r') as f: 的用法以及意义相关推荐

  1. python字符串前面加f什么意思_Python 字符串前面加u,r,b,f的含义

    1.字符串前加 u 例:u"我是含有中文字符组成的字符串." 作用: 后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时 ...

  2. python如何统计字典里面健的数量_Python中使用Counter进行字典创建以及key数量统计的方法...

    Python中使用Counter进行字典创建以及key数量统计的方法 来源:中文源码网    浏览: 次    日期:2018年9月2日 Python中使用Counter进行字典创建以及key数量统计 ...

  3. python中函数可以赋值给一个变量_python中函数赋值给变量时的问题注意详解

    变量赋值是我们在日常开发中经常会遇到的一个问题,下面这篇文章主要给大家介绍了关于python中将函数赋值给变量时需要注意的一些问题,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的 ...

  4. python中的字典和类的区别_Python中的 字典和字典数据类型

    字典 1.字典是Python的内建数据类型,我们知道序列是以连续的整数为索引,而字典用关键字作为索引.特别的,关键字必须是不可变类型,常为字符串或者数值. #如果元组中只包含字符串和数字,它可以作为关 ...

  5. python找不到指定模块sklearn怎么办_python中sklearn找不到指定模块怎么办

    python中sklearn找不到指定模块怎么办 发布时间:2020-07-11 15:12:30 来源:亿速云 阅读:94 作者:清晨 这篇文章将为大家详细讲解有关python中sklearn找不到 ...

  6. python代码风格程序越复杂越高级_Python中代码风格的改变和相应的性能优化

    使用现代风格改善你的代码 一旦你开始使用 Python 3,你就有机会接触新的特性来改善你的代码.这篇文章中提到的很多东西实际上在 Python 3 之前就已经被支持了.但我还是要提一下它们,因为知道 ...

  7. python中的numpy库有什么优缺点_python中关于numpy库的介绍

    1.Numpy是什么? NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵. NumPy包含很多实用的数学函数,涵盖线 ...

  8. python连续两个冒号是什么成语_python中双冒号

    1.字符串转义序列转义字符 描述(在行尾时) 续行符\ 反斜杠符号' 单引号" 双引号a 响铃b 退格(Backspace)e 转义000 空n 换行v 纵向制表符t 横向制表符r 回车f ...

  9. python中变量的作用域有几种_Python中变量的作用域(variable scope)

    http://www.crifan.com/summary_python_variable_effective_scope/ 解释python中变量的作用域 示例: 1.代码版 #!/usr/bin/ ...

  10. python中选择结构通过什么语句实现_Python中选择结构通过什么语句实现

    Python中选择结构通过什么语句实现 Python中的选择结构语句是 if elif else. Python用缩进代替了Java/C/C++/C#中常用的大括号{}来区分代码块,另外Python在 ...

最新文章

  1. redis集群扩容和缩容_深入理解Redis Cluster集群
  2. 振华重工携手微软,开启港口运营数字化转型新纪元
  3. 国内ios分亨组件,
  4. std::future ---C++17 多线程
  5. 战斗机嵌入式训练系统中的智能虚拟陪练
  6. 设计模式之单例模式——Singleton
  7. PHP多线程(Pthread初探)
  8. 怎样转移计算机系统用户文件,巧用“个人文件转移工具”一键转移系统盘的用户文件夹...
  9. 大数据技术综合分析!数据采集与预处理
  10. 在线报刊html代码,数字报纸HTML版本
  11. k620显卡linux驱动下载,K620k620驱动的安装方法和丽台k620显卡可以玩哪些游戏
  12. BZOJ3709 Bohater 贪心
  13. Electron开发桌面应用(一) Helloworld
  14. Ruby-Devise采用多种形式登录
  15. 人工智能相关书籍介绍
  16. vue+elementUI动态生成表格列
  17. STM32 Combined PWM的用法
  18. C语言循环语句——while、for、do while
  19. 学习学习学习学习学习学习
  20. 黄金思维圈,养成透过现象看本质的能力

热门文章

  1. 面了一个37岁的程序员,我很慌......
  2. golang 实用的 打印错误堆栈 的方法
  3. 【Python入门】5-1 条件判断 if、if-else、if-elif-else
  4. 三星android怎么获取root,三星S8如何获取ROOT权限_三星S8ROOT获取教程
  5. 无效的m3u8怎么办_vue使用video.js解决m3u8视频播放格式
  6. Windows安装Apache(解决问题Set the 'ServerName' directive globally to suppress this message)
  7. 【已解决】Python安装TensorFlow报错“Consider adding this directory to PATH or, if you prefer to suppress this
  8. 【时空序列预测第四篇】PredRNN++: Towards A Resolution of the Deep-in-Time Dilemma in Spatiotemporal Predictive
  9. 腾讯云主机部署hexo博客
  10. 2020 GDUT Winter Personal Training Contest I (Div. 2) B - Divisors of Two Integers题解