'''
'如何打开一个文件
模特主妇护士老师.txt
1. 文件路径:f:\模特主妇护士老师.txt
2. 操作方式:只读:r ,rb ,只写: w, wb ,追加: a , ab,读写:r+ , r+b,写读 :w+ , w+b ......
3. 编码方式

以什么编码方式储存的文件,就以什么编码打开进行操作

'''

绝对路径: 从根目录开始
f = open('f:\模特主妇护士老师.txt', mode = 'r', encoding = 'utf-8')
content = f.read()
print(content)
f.close()

相对路径: 从当前目录开始

只读 r

bytes --> str
f = open('模特主妇护士老师.txt', mode = 'r', encoding = 'utf-8')
content = f.read()
print(content,type(content))
f.close()

f = open('模特主妇护士老师.txt', mode = 'rb')
content = f.read()
print(content)
f.close()

对于写 w ,没有此文件就会创建文件

f = open('log', mode = 'w', encoding = 'utf-8')
f.write('骑兵步兵')
f.close()

先将源文件的内容全部清除,再进行写操作

f = open('log', mode = 'w', encoding = 'utf-8')
f.write('回房间ask东方航空')
f.close()

f = open('log', mode = 'wb')
f.write('回房间ask东方航空'.encode('utf-8'))
f.close()

追加

f = open('log', mode = 'wb')
f.write('回房间ask东方航空'.encode('utf-8'))
f.close()

追加

f = open('log',mode = 'a', encoding = 'utf-8')
f.write('kidd')
f.close()

f = open('log',mode = 'a+', encoding = 'utf-8')
f.write('kidd')
f.seek(0) # + 可以用seek(),寻找光标
print(f.read())
f.close()

f = open('log',mode = 'ab')
f.write('KID'.encode('utf-8'))
f.close()

读写

f = open('log', mode = 'r+', encoding = 'utf-8')
print(f.read())
f.write('尹宁')
print(f.read())
f.close()

写读

r+ 模式下 进行写读,从头开始写

f = open('log', mode = 'r+', encoding = 'utf-8')
f.write('KID')
print(f.read())
f.close()

f = open('log', mode = 'r+', encoding = 'utf-8')
f.write('KIDDDDDDDD')
print(f.read())
f.close()

读写

# 后面加 b , 就不写encoding = ''了

f = open('log', mode = 'r+b')
print(f.read())
f.write('尹宁'.encode('utf-8'))
f.close()

写读 w+

f = open('log', mode = 'w+', encoding = 'utf-8')
f.write('KID')
f.seek(0)
print(f.read())
f.close()

功能详解
最常用的就是r+

read()、seek()、

f = open('log', mode = 'r+', encoding = 'utf-8')
# content = f.read(3) # 读出前三个字符(读出来的都是字符)
f.seek(3) #移动光标是按照字节定光标的位置,一个中文是三个字节,故只能是3 的倍数
print(f.tell()) # 告诉你光标的位置
# content = f.read()
# print(content)
f.close()

f = open('log',mode = 'a+', encoding = 'utf-8')
f.write('kidd')
content = f.tell()
f.seek(content - 3) # 中文是一个字符(三个字节),英文是三个字符(三个字节)
print(f.read())
f.close()

f = open('log', mode = 'r+', encoding = 'utf-8')
f.tell()
f.readable() #是否可读
line = f.readline() # 一行一行的读
line = f.readlines() # 每一行当成列表中的一个元素,添加到list中(for循环)
f.truncate(4)
print(l1)
for line in f:
print(line)
f.close()

with open('log', mode = 'r+', encoding = 'utf-8') as obj:
print(obj.read()) # close() 不用写,自动关闭

with open('log', mode = 'r+', encoding = 'utf-8') as f1,open('log', mode = 'r+', encoding = 'utf-8') as f2:
print(f1.read()) # 可以打开多个
print(f2.read())

python学习之老男孩python全栈第九期_day008知识点总结的更多相关文章

  1. python学习之老男孩python全栈第九期_day027知识点总结——反射、类的内置方法

    一. 反射 ''' # isinstance class A:pass class B(A):pass a = A() print(isinstance(a,A)) # 判断对象和类的关系 print ...

  2. python学习之老男孩python全栈第九期_day023知识点总结——类和对象命名空间、组合

    一. 类和对象命名空间类里 可以定义两种属性: 1. 静态属性 2. 动态属性 class Course: language = 'Chinese' def __init__(self, teache ...

  3. python学习之老男孩python全栈第九期_day019知识点总结——collections模块、时间模块、random模块、os模块、sys模块

    一. collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:namedtuple.deque.Counte ...

  4. python学习之老男孩python全栈第九期_day017知识点总结——初识递归、算法

    一. 递归函数 如果一个函数在内部调用自身本身,这个函数就是递归函数. 最大递归深度默认是997 -- python从内存角度出发做得限制(而不是程序真的报错),最大深度可以修改 def func(n ...

  5. python学习之老男孩python全栈第九期_day010知识点总结

    def qqxing(l = []): # 可变数据类型 l.append(1) print(l)qqxing() # [1]qqxing([]) # [1]qqxing() # [1, 1]qqxi ...

  6. python学习之老男孩python全栈第九期_day007知识点总结

    基础数据类型汇总 1. str 2. int 3. list 4. bool 5. dict (1) fromkeys Python 字典 fromkeys() 方法用于创建一个新的字典,并以可迭代对 ...

  7. python学习之老男孩python全栈第九期_day001知识点总结

    1. Python2与Python3的区别: Python2:源码不标准,混乱,重复代码太多: Python3:统一标准,去除重复代码. 编码方式: python2的默认编码方式为ASCII码:pyt ...

  8. python学习之老男孩python全栈第九期_day014知识点总结

    # 迭代器和生成器# 迭代器 # 双下方法:很少直接调用的方法,一般情况下,是通过其他语法触发的# 可迭代的 --> 可迭代协议:含有__iter__的方法( '__iter__' in dir ...

  9. python学习之老男孩python全栈第九期_day016知识点总结

    '''数据类型:intbool... 数据结构:dict (python独有的)listtuple (pytho独有的)setstr''' # reverse() 反转l = [1,2,3,4,5]l ...

随机推荐

  1. Tomcat在Linux下的安装

    按部就班的把 tomcat 上传到 Linux 我创建了一个文件夹用作存放解压文件 ( tomcat只要解压就可以使用 ) 解压  :  tar -xvf apache-tomcat-7.0.52.t ...

  2. [海外干货] BlackHat 2017 首日议题的所有 PPT以及材料

    今年是 Black Hat 举办的第 20 个年头,高温酷暑也挡不住全世界黑客和安全人员奔赴拉斯维加斯的热情.毕竟这可是一年一度的盛大狂欢啊.今年的 BHUSA 从美国东部时间时间 7 月 22 日( ...

  3. 【UML】:时序图

    时序图表达了类之间调用关系,以及调用时序关系. Actor: 调用者实例化类的对象,执行者. Lifeline: 生命线,竖的虚线.上方方框是类名表示存在的时间,从上至下表示时间流逝.Lifeline ...

  4. spring cloud 学习(6) - zuul 微服务网关

    微服务架构体系中,通常一个业务系统会有很多的微服务,比如:OrderService.ProductService.UserService...,为了让调用更简单,一般会在这些服务前端再封装一层,类似下 ...

  5. odoo开发笔记 -- 附件上传

    附件上传基本原理实现,可以参考这篇: https://www.cnblogs.com/ljwTiey/p/7348291.html http://blog.csdn.net/wangnan537/ar ...

  6. numpy中int类型与python中的int

    [code] import numpy as np nparr = np.array([[1 ,2, 3, 4]]) np_int32 = nparr[0][0] # np_int=1 py_int ...

  7. / | \ # $ ^ & *这些符号怎么读

    供参考: /: slash或forward slash 英 [slæʃ] |: vertical bar或pipe #: number sign或pound sign \: backslash 英 [ ...

  8. hbase和zookeeper的安装和部署

    1.概要 1.1HBase的使用场景  大数据量 (100s TB级数据) 且有快速随机访问的需求.  例如淘宝的交易历史记录.数据量巨大无容置疑,面向普通用户的请求必然要即时响应.  容量的优 ...

  9. docker 非root用户修改mount到容器的文件出现“Operation not permitted

    使用环境centos7 x86-64 内核版本4.19.9 docker使用非root用户启动,daemon.json配置文件内容如下: # cat daemon.json { "usern ...

  10. Oracle存储过程编译卡死的解决方法

    转自: https://www.cnblogs.com/liang-ling/p/5395249.html 解决方法如下: 1:查V$DB_OBJECT_CACHE SELECT * FROM V$D ...