一:学习内容

  • 读文件
  • 写文件
  • 编码与解码

二:读文件--步骤分解

1.过程

第一步:打开文件
第二步:读文件内容
第三步:关闭文件

2.第一步:打开文件

open(path,flag[,encoding][,errors])

参数说明:
path:要打开文件的路径
flag:打开方式(
r:以只读的方式打开文件,文件的描述符放在文件开头
rb:以二进制格式只读的方式打开文件,文件的描述符放在文件开头
r+:打开一个文件用于读写,文件描述符放在文件的开头
w:打开一个文件只用于写入,文件的描述符放在文件的开头,如果该文件已经存在会覆盖,如果不存在则创建新文件
wb:打开一个文件只用于写入二进制,如果该文件会覆盖,如果该文件不存在新创建文件
w+:打开一个文件用于读写,如果该文件存在会覆盖,如果该文件不存在新创建文件
a:打开一个文件用于追加,如果文件存在文件描述符将会被放到文件末尾
a+:打开一个文件用于追加
encoding:编码方式
errors:错误处理

path = r"F:\python_test\read_practice.txt"
#f = open(path,"r",encoding="utf-8",errors="ignore")   #ignore 忽略错误
f = open(path,"r",encoding="utf-8")

3.第二步:读文件内容

#法1、读取文件全部内容,适合读文件比较小的
str1 = f.read()
print(str1)

#法2、读取指定字符数
str2 = f.read(10)  #读取文件10个字符,1个中文是1个字符
print(str2)
str3 = f.read(10)   #继续上一次读取结束的位置继续读取
print(str3)

#法3、读取整行包括"\n"字符
str4 = f.readline()
print(str4)
str5 = f.readline()  #继续下一行读取
print(str5)

#法4、读取指定字符数
str6 = f.readline(10)
print(str6)

#法5、读取所有行包括"\n"字符并返回列表
list7 = f.readlines()
print(list7)

#法6、若给定的数字大于0,返回实际size字符的行数
list7 = f.readlines(25)
print(list7)

#修改文件描述符位置
f.seek(0)
str9 = f.read()
print(str9)

4.第三步:关闭文件

f.close()

三:读文件--完整过程

1.法一
try:
    f1 = open(path,"r",encoding="utf-8")
    print(f1.read())
finally:
    if f1:   #打开失败时f1对象还未创建就不用关闭了
        f1.close()

2.法二,最简洁的写法,不用自己手动去close了

with open(path,"r",encoding="utf-8") as f2:
    print(f2.read())

四:写文件--步骤分解

1.过程

第一步:打开文件
第二步:写文件内容
第三步:关闭文件

2.刷新缓冲区两种方式

自动刷新  f.close()
手动刷新  f.flush()

3.第一步:打开文件

path = r"F:\python_test\write_practice.txt"
f = open(path,"w",encoding="utf-8")

4.第二步:写文件

#将信息写入缓冲区
f.write("tester is a good girl")

#刷新缓冲区,就能写入文件
#直接把缓冲区的数据立刻写入文件,如果没有写刷新缓冲区则会在关闭文件时在把缓冲区写入文件
f.flush()

5.第三步:关闭文件

f.close()

五:写文件--完整过程

1.法一
try:
    f1 = open(path,"w",encoding="utf-8")
    f1.write("good girl")
finally:
    if f1:   #打开失败时f1对象还未创建就不用关闭了
        f1.close()

2.法二-覆盖写入,简洁的写法,不用自己手动去close了

with open(path,"w",encoding="utf-8") as f2:
    f2.write("good girl")

3.法三-追加写入,简洁的写法,不用自己手动去close了

with open(path,"a",encoding="utf-8") as f3:
    f3.write("young girl")

执行完法二和法三的结果:文件被写入内容

六:编码与解码

1.说明

不是二进制时:
文件打开的编码要一致,即写文件和读文件open中的encoding要一致

二进制文件时:
文件写入读取的编码要一致

2.不是二进制文件读写操作

path = r"F:\python_test\encode_file.txt"

with open(path,"w",encoding="utf-8") as f1:
    str = "tester is a good girl测试"
    f1.write(str)

with open(path,"r",encoding="utf-8") as f2:
    data = f2.read()
    print(data)
    print(type(data))

3.二进制文件读写

path = r"F:\python_test\encode_file.txt"

#with open(path,"wb",encoding="utf-8") ,当方式里有b时,不能有encoding参数,否则会报错binary mode doesn't take an encoding argument
with open(path,"wb") as f1:
    str = "tester is a good girl测试"
    f1.write(str.encode("utf-8"))

with open(path,"rb") as f2:
    data = f2.read()
    print(data)
    print(type(data))
    newData = data.decode("utf-8")
    print(newData)
    print(type(newData))

python3笔记十七:python文件读写的更多相关文章

  1. python文件读写及形式转化和CGI的简单应用

    一丶python文件读写学习笔记 open() 将会返回一个 file 对象,基本语法格式如下: open(filename, mode) filename:包含了你要访问的文件名称的字符串值. mo ...

  2. python 文件读写操作(24)

    以前的代码都是直接将数据输出到控制台,实际上我们也可以通过读/写文件的方式读取/输出到磁盘文件中,文件读写简称I/O操作.文件I/O操作一共分为四部分:打开(open)/读取(read)/写入(wri ...

  3. python笔记2 生成器 文件读写

    生成器 一边循环一边计算的机制,称为生成器(Generator). 把一个列表生成式的[]改成(),就创建了一个generator: 创建了一个generator后,通过for循环来迭代它. 著名的斐 ...

  4. 【学习】python文件读写,用with open as的好处,非常好【转载】

    原文链接:http://www.cnblogs.com/ymjyqsx/p/6554817.html 备注:博主还有很多值得学习的笔记,遇到问题可以拜读,非常感谢博主的总结 读写文件是最常见的IO操作 ...

  5. Python文件读写、StringIO和BytesIO

    1 IO的含义 在计算机中,IO是Input/Output的简写,也就是输入和输出. 由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就 ...

  6. Python文件读写及网站显示

    一.关于文件读写的笔记 (一) 文件概述 文件是一个存储在辅助存储器上的数据序列,可以包含任何数据内容 文件都是按照2进制进行存储的,但在表现形式上有2种:文本文件和二进制文件. 1. 文本文件 文本 ...

  7. python文件读写详解

    # Python3 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, ...

  8. Python 简明教程 --- 24,Python 文件读写

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 过去的代码都是未经测试的代码. 目录 无论是哪种编程语言,IO 操作都是非常重要的部分.I 即Inp ...

  9. Python 文件读写,条件循环(三次登录锁定账号实例)

    通过文件读写,条件循环相关语法,实现三次登录失败则锁定该账号的功能 需求一 """需求描述: 1.输入正确账号,密码,退出程序 2.登录失败,重新输入账号密码 3.同一账 ...

  10. python文件读写,以后就用with open语句

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

随机推荐

  1. 设计模式及UML图

    UML图 1. 依赖关系

  2. Java设计模式只好

    有时,一些学生私下问我:如何学习前端问题.这里有一个统一的回复,下次我遇到这个问题,同学们会直接给你发这篇文章的链接地址. “如何学习前端”应该因人而异,其他人的方法可能不适合自己.让我们谈谈我的学习 ...

  3. mysql命令行的一些小技巧【实用:多屏显示,格式化输出等】

    1.以html格式输出结果使用mysql客户端的参数–html或者-T,则所有SQL的查询结果会自动生成为html的table代码$ mysql -u root --htmlWelcome to th ...

  4. vlan linux内核数据流程

    转:http://blog.sina.com.cn/s/blog_62bbc49c0100fs0n.html 一.前言 前几天做协议划分vlan的时候看了一些linux内核,了解不深,整理了下vlan ...

  5. Raspberrypi 安装完MySQL之后登录不了(ERROR 1698 (28000))

    1.问题原因: 出现这是错误是因为 mysql 默认的 root 用户使用了 UNIX auth_socket_plugin 的用户认证方式,我们有下面两种方式处理问题: 修改 root 用户认证方式 ...

  6. [转] - Linux中使用alternatives切换Jdk版本

    1. 准备JDK包,分别是1.7和1.8,jdk-7u79-linux-x64.tar.gz和jdk-8u161-linux-x64.gz: 2. 解压,解压后的目录结构如图所示: JDK1.7: J ...

  7. API开发之接口安全(一)----生成sign

    在对于API的开发中 最让人头疼的 就是接口数据暴露 让一些有心之人 抓包之后恶意请求 那么如何解决这一弊端呢?自然而然的 我们就想到了 加密  那我们又如何加密 如何解密 才能使之有最安全的效率呢? ...

  8. Python Memcached、Redis & RabbitMQ使用

    一.Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的 ...

  9. elk快速入门-Logstash

    Logstash1.功能:数据输入,数据筛选,数据输出2.特性:数据来源中立性,支持众多数据源:如文件log file,指标,网站服务日志,关系型数据库,redis,mq等产生的数据3.beats:分 ...

  10. Python——列表赋值的若干用例

    原创声明:本文系博主原创文章,转载或引用请注明出处. 1. 直接赋值 >>> a = [1,2,3,4,5] >>> b = a >>> id(a ...