注:用btyes方式的一般都是在“非文字类的(比如图片)”

1、文件的读取

>>>第1种

#绝对路径
s = open('E:\天气.txt', mode='r', encoding='utf-8') # 用“utf-8 的方式去读取文件内容”,(绝对路径E:\天气.txt)
content = s.read()
print(content)
s.close() #相对路径
s = open('天气', mode='r', encoding='utf-8') # 用“utf-8 的方式去读取文件内容”,(相对路径天气-->当前目录下创建)
content = s.read() # read把数据类型转换 bytes--->str
print(content)
s.close()

>>>第2种

# 用bytes 的方式去读(b'\xe4\xbb\x8a\xe5\xa4\xa9\xe4\xb8\x8b\xe5\xa4\xa7\xe9\x9b\xa8\xe4\xba\x86\xe3\x80\x82')
s = open('天气', mode='rb')
content = s.read()
print(content)
s.close()

2、文件的写入

>>>1、对于w:没有此文件就会创建新文件

s = open('天气1', mode='w', encoding='utf-8')    # 新创建一个文件'天气1',并且写入了'全湿透了'
s.write('全湿透了')
s.close()

>>>2、对于已有文件就会直接删除内容,再重新写入内容

s = open('天气1', mode='w', encoding='utf-8')
s.write('怎么办')
s.close()

>>>3、用btyes方式写入

s = open('天气1', mode='wb')
s.write('快出太阳吧'.encode('utf-8'))
s.close()

3、追加功能(只能进行一次追加,不能读取)

>>>第1种:

s = open('天气1', mode='a', encoding='utf-8')       # mode = ‘a'   (全湿透了快回家换衣服)
s.write('快回家换衣服')
s.close()

>>>第2种:用btyes方式追加

s = open('天气1', mode='ab')
s.write('快回家换衣服'.encode('utf-8')) # (全湿透了快回家换衣服快回家换衣服)
s.close()
# a+ 可以进行追加之后读取
s = open('天气1', mode='a+', encoding='utf-8') # mode = ‘a' (全湿透了快回家换衣服)
s.write('快回家换衣服')
s.seek(0) # 将光标挪到最前面
print(s.read())
s.close()

4、文件的读写(只能读-写两步,没办法再读再写(功能与追加类似))

s = open('天气', mode='r+', encoding='utf-8')
content = s.read() # 先读后写
s.write('全湿透了') # 先读之后,光标到最后,再写入内容(今天下大雨了全湿透了)
s.close()
# btyes读写
s = open('天气1', mode='r+b')
print(s.read())
s.write('AAAa'.encode('utf-8'))
s.close()

5、文件的写读(先清除内容再写入)

s = open('天气1', mode='w+', encoding='utf-8')
s.write('AAA') # 先写,写之前光标在前,把内容覆盖,再从光标位置往后读取内容(一般光标后面无数据)
s.seek(0) # seek()调光标位置,再读取 (AAA)
print(s.read())
s.close()

6、功能详解

>>>文件内容(今天下大雨了全湿透了)

s = open('天气', mode='r+', encoding='utf-8')
content = s.read(3) # read 直接读取字符
print(content) # 输出 "今天下"
s.close()
s = open('天气', mode='r+', encoding='utf-8')
s.seek(3) # seek 按照字节去定光标,一个中文三个字节,只能按照3 的倍数去读
content = s.read()
print(content) # 输出:天下大雨了全湿透了
print(s.readable()) # 判断是否可读
line = s.readline() # 一行一行的去读内容
line = s.readlines() # 以一个列表形式全部输出,每一行当做列表的一个元素(可用for循环打印出来)
print(line)
for line in s: # 将内容一行一行循环打印出来
print(line)
s.truncate(4) # 对原文件内容进行按字节截取
s.close()

>>>使用循环打印方式

with open('天气', mode='r+', encoding='utf-8') as s:     # 直接按行循环打印出内容,无需close(),自动关闭
print(s.read())
with open('天气', mode='r+', encoding='utf-8') as s,\
open('天气', mode='w+', encoding='utf-8') as f: # 可以同时打开多个文件进行操作

>>>光标检测

s = open('天气', mode='r+', encoding='utf-8')
s.seek(3)
print(s.tell()) # 检测光标位置,应用:断点续传
s.close()

----->小程序

# 天气1内容:快回家里
s = open('天气1', mode='a+', encoding='utf-8')
s.write('换大衣服')
count = s.tell() # 先找到光标位置
s.seek(count-9) #将光标诺往前9个字节即三个字符,然后读取
print(s.read()) # 输出:大衣服
s.close()

08、python的基础--->文件操作的更多相关文章

  1. python语法基础-文件操作-长期维护

    ###############    python-简单的文件操作  ############### # python中文件的操作 # 文件操作的基本套路 # 1,打开文件,默认是是只读方式打开文件 ...

  2. python os&shutil 文件操作

    python os&shutil 文件操作 # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于W ...

  3. Python的高级文件操作(shutil模块)

    Python的高级文件操作(shutil模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让我们用python的文件处理来进行文件拷贝,想必很多小伙伴的思路是:使用打开2个 ...

  4. python 历险记(三)— python 的常用文件操作

    目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...

  5. Python入门篇-文件操作

    Python入门篇-文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.文件IO常用操作 open:打开 read:读取 write:写入 close:关闭 readlin ...

  6. Python之常用文件操作

    Python之常用文件操作

  7. Python基础(六) 基础文件操作

    今天学习python下对文件的基础操作,主要从open函数.File对象的属性.文件定位.简单操作.举例说明几个步骤开始学习,下面开始进入今天的主题: 一.open函数介绍 open函数主要是打开一个 ...

  8. 小白学 Python(18):基础文件操作

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  9. python基础-文件操作

    一.文件操作 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作. 打开文件的模式有: r ,只读模式[默认模式,文件必须存在,不存在则抛出异 ...

随机推荐

  1. spring boot 尚桂谷学习笔记04 ---Web开始

    ------web开发------ 1.创建spring boot 应用 选中我们需要的模块 2.spring boot 已经默认将这些场景配置好了 @EnableAutoConfiguration ...

  2. django4-模板,templates

    如何使用templates呢? 在views.py文件中,函数或者方法通过return render(request,"userInfor.html",{"info_li ...

  3. MSF——基本使用和Exploit模块(一)

    MSF系列: MSF——基本使用和Exploit模块(一) MSF——Payload模块(二) MSF——Meterpreter(三) MSF——信息收集(四) MSF——Metasploit Fra ...

  4. list中的所有值转换为字符串,以及list拼接成一个字符串

    import stringlis=[1,2,3,'abc']fw=open('hello.txt','w',encoding='utf-8')# print(''.join(str(lis).repl ...

  5. if语句的嵌套使用之获取三个数据的最大值

    获取三个数据的最大值: class Hello2 { public static void main(String[] args) { int a = 10; int b = 20; int c = ...

  6. five hundred miles

  7. neo4j使用cypher查询路径避免出现环路

    neo4j在使用可变长路径找两个点之前的所有路径时,会返回包含环路的路径(一个点在路径中出现两次),如下面的语句: MATCH path = (x)-[:KNOWS*]-(y) 可能返回a->b ...

  8. leetcde-27-移除元素

    问题: package com.example.demo; public class Test27 { /** * 定义一个尾指针,该位置放置和val不同的元素, * 遍历数组,将不同的元素全部放置到 ...

  9. SQL数据库— <3>高级查询、常用函数 --摘录网络

    SQL Server T-SQL高级查询 高级查询在数据库中用得是最频繁的,也是应用最广泛的. Ø 基本常用查询 --select select * from student; --all 查询所有 ...

  10. 用react+redux+webpack搭建项目一些疑惑

    --save-dev开发用 例如:webpack --save开发和发布用 例如:react