读写文件open(filename, mode, encoding=None)

mode

mode 权限
r 只读
w 只写(会从头开始覆盖覆盖写当前文件内容)
a 追加写(从文件内容的末尾追加写内容,不会覆盖现有的内容)
r+ 读写(这里的写,也是从头覆盖写)
b 二进制模式

f.close()

在每次使用完文件过后,一定要是用f.close()关闭文件,避免资源的浪费

写入文件

只写w

  1. 首先创建一个空的文本文件

    1. 写入指定内容

      此时采用w模式(覆盖写)写入了两次内容

      f = open('workfile', 'w', encoding="utf-8")
      f.write('hello python\n')
      f.write('hello java\n')
      f.write('hello c\n') f.close() f = open('workfile', 'w', encoding="utf-8")
      f.write('hello python\n')
      f.write('hello java\n')
      f.write('hello c\n') f.close()

      文件内容中之显示了一次写入的内容,因为第一次写入的内容被第二写入的内容所覆盖

      也可以再次写入不同的内容来验证这一现象

      f = open('workfile', 'w', encoding='utf-8')
      f.write('niaho ----') f.close()

      f.write('niaho ----')将上一次的内容全部覆盖,并写入新的数据

覆盖写:覆盖写只在将一个文件打开后,开始写入内容时,如果再次之前文件已经被打开的话,将为按照当前写入位置,继续写 入数据

追加写a

写入方式与只写相似,只是写入模式换为a

此时workfile中的数据如下

f = open('workfile', 'a')
f.write('追加写的数据')
f.close()

追加写的数据会在原有数据的后面追加

读取文件

读取文件要在可读的模式下进行,即mode='r'

f.read(size)

  1. 使用f.read(size)可以读取文件,当省略size或者size为负数时,默认读取整个文件

    f = open('workfile', 'r', encoding='utf-8')
    print(f.read()) f.close()

    若已经读取过一次文件,在文件关闭前再次读取此文件再次读取此文件时,会返回''

    f = open('workfile', 'r', encoding='utf-8')
    print(f.read())
    print(f.read())
    f.close()

    二进制模式下更能体现这一点

    f = open('workfile', 'rb')
    print(f.read())
    print(f.read())
    f.close()

    1. 当size的值为正整数时

      size 取其他值时,读取并返回最多 size 个字符(文本模式)或 size 个字节(二进制模式)。如已到达文件末尾,f.read() 返回空字符串(''

      f = open('workfile', 'r', encoding='utf-8')
      print(f.read(10))
      print(f.read(10))
      print(f.read(10))
      f.close()

f.readline()

f.readline() 从文件中读取单行数据;字符串末尾保留换行符(\n),只有在文件不以换行符结尾时,文件的最后一行才会省略换行符。这种方式让返回值清晰明确;只要 f.readline() 返回空字符串,就表示已经到达了文件末尾,空行使用 '\n' 表示,该字符串只包含一个换行符。

将文件的内容更改为如下

  1. 使用f.readline()读取单行数据

    f = open('workfile', 'rb')
    print(f.readline())
    print(f.readline())
    print(f.readline())
    print(f.readline())

  2. 也可以使用循环读取内容

    f = open('workfile', 'rb')
    for i in f:
    print(i)
    f.close()

定位

f.tell() 返回整数,给出文件对象在文件中的当前位置,表示为二进制模式下时从文件开始的字节数,以及文本模式下的意义不明的数字。

f.seek(offset, whence) 可以改变文件对象的位置。通过向参考点添加 offset 计算位置;参考点由 whence 参数指定。 whence 值为 0 时,表示从文件开头计算,1 表示使用当前文件位置,2 表示使用文件末尾作为参考点。省略 whence 时,其默认值为 0,即使用文件开头作为参考点。

>>> f = open('workfile', 'rb+')
>>> f.write(b'0123456789abcdef')
16
>>> f.seek(5) # 定位到文件中的第 6 个字节
5
>>> f.read(1)
b'5'
>>> f.seek(-3, 2) # 定位到倒数第 3 个字节
13
>>> f.read(1)
b'd'

TOSTUDY

JSON

07_读写文件open(filename, mode, encoding=None)的更多相关文章

  1. Python读写文件乱码问题

    对开发者来说,最恼人的问题之一莫过于读写文件的时候,由于编码千差万别,出现乱码问题.好难快速解决啊... 最近我也遇到了这样的问题,经研究,把大致的解决思路拿出来共享. 1. python中习惯首先声 ...

  2. C#读写文件总结

    1.使用FileStream读写文件   文件头:   using System; using System.Collections.Generic; using System.Text; using ...

  3. C# 之 读写文件

    1.使用 FileStream 读写文件 添加命名空间引用: using System; using System.Collections.Generic; using System.Text; us ...

  4. python3.x 读写文件要使用UTF8编码的话需要。。

    读写文件常遇到编码不正确的情况,都用UTF8读写文件就好了,在读写的时候加上编码格式:encoding='UTF-8'如下:with open(filename, 'r', encoding='UTF ...

  5. Python 3 学习笔记之——键盘输入和读写文件

    1. 键盘输入 Python提供了 input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘.input 可以接收一个 Python 表达式作为输入,并将运算结果返回. str = inp ...

  6. Python IO编程-读写文件

    1.1给出规格化得地址字符串,这些字符串是经过转义的能直接在代码里使用的字符串 需要导入os模块 import os >>>os.path.join('user','bin','sp ...

  7. Python读写文件

    Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...

  8. php中并发读写文件冲突的解决方案

    在这里提供4种高并发读写文件的方案,各有优点,可以根据自己的情况解决php并发读写文件冲突的问题. 对于日IP不高或者说并发数不是很大的应用,一般不用考虑这些!用一般的文件操作方法完全没有问题.但如果 ...

  9. Inno Setup 如何读写文件

    软件安装的实质就是拷贝,对于简单的打包当然不需要考虑修改某(配置)文件.通过inno修改文件的目的在于把安装时相关信息写入文件中,提供其它应用的读取,而这些信息也只能在安装时才能确定,比如安装用户选择 ...

  10. c# 高效读写文件

    一.同步读写文件(在并发情况下不会发生文件被占用异常) static void Main(string[] args) { Parallel.For(0, 10000, e => { strin ...

随机推荐

  1. 两个 F# 的 MVVM

    fsprojects/Avalonia.FuncUI: Develop cross-plattform GUI Applications using F# and Avalonia! fabulous ...

  2. 【C#】【报错解决】找不到请求的Net Framework Data ProVider。可能没有安装。

    如题报错截图如上,解决方法如下 第一步:找到[引用]中的MySql.Data中的版本号 第二步,在Web.config中添加如下配置 <system.data> <DbProvide ...

  3. Springboot使用mongodb遇到问题及解决

    网上看到使用mongodb好像很简单,没有什么问题,可我一用就怎么都连不上,先看看我的配置 在pom.xml中添加依赖 1234 <dependency>    <groupId&g ...

  4. Mybatis-plus关于代码生成器的使用

    1.添加依赖 2.在test包下创建一个CodeGet类,实现生成代码的功能.注意:全局配置.数据源配置一定要和自己的电脑配置一致! 3.执行CodeGet类中的main方法.打印台有如下图提示字样, ...

  5. 龙哥量化:通达信板块概念FAQ,*期强势、*期弱势是怎么划分的?等问题是官网的解释,股友可以根据文章的提示迸发策略灵感

    如果您需要代写公式, 请联系我. 龙哥QQ:591438821 龙哥微信:Long622889 比如第9条,*期强势:20日涨幅>=30%,     3日涨幅>0,非停牌.非ST.非未开板 ...

  6. Qt编写的项目作品36-秘钥生成工具

    一.功能特点 (一)常规秘钥机制 远程联网激活,每次启动都联网查看使用时间等,这种方法最完美,缺点是没法联网的设备就歇菜了,而很多设备都是要求离线使用无法联网. 通过获取本地的硬盘+CPU等硬件的编号 ...

  7. C#使用Tesseract C++ API过程记录

    Tesseract Tesseract 是一个开源的光学字符识别(OCR)引擎,最初由 Hewlett-Packard(惠普)实验室开发,后来由 Google 收购并继续维护和开源贡献.Tessera ...

  8. VC++2008、2010、2012、2015、2017等IDE中如何设置命令行参数进行程序调试

    有时我们在写程序时会从命令行中直接读入参数,形如: int main(int argc,char**argv){ //your code here return 0; } 其实在vc2010 IDE中 ...

  9. JS-正则表达式(基本语法、test、exec、\d\D\w\W\s\S .)

    二,正则表达式 1,什么是正则表达式 是一种规范,对字符串格式进行验证的规范 不用自己写,常用的正则表达式,网上都有,只要会使用就可以 2,定义方法 字面量 var reg = /正则表达式/ 常用方 ...

  10. Python并发总结:多线程、多进程与异步编程

    随着多核的发展,Python中并发编程也变得越来越广泛且发展很快. 一方面,Python提供了多种并发编程工具. 比如,传统的多线程,通过threading模块方便地创建和管理线程,可用于I/O密集型 ...