首页 > 编程语言 > 详细

python知识心得09

时间:2021-06-08 20:38:09      阅读:30      评论:0      收藏:0      [点我收藏+]

今日内容回顾

文件处理

文件的处理的基本步骤

"""
1、什么是文件
    文件是操作系统提供给用户或者说应用程序操作硬盘的一种功能

2、为何要用文件
    读写文件就是在读写硬盘:我们对文件的读写操作都会被操作系统转换成硬盘的读写操作

    应用程序-------------》文件对象、文件句柄
    操作系统-------------》文件
    硬件-----------------》硬盘

3、如何用文件
"""
# 打开文件,若文件不存在,直接报错,
#          若文件存在,可以读取文件内容
# f = open(r‘a.txt‘, mode=‘rt‘, encoding=‘utf-8‘)
# print(f)  # 文件对象、文件句柄 #<_io.TextIOWrapper name=‘a.txt‘ mode=‘rt‘ encoding=‘utf-8‘>
# res = f.read() 
# print(res)  #读取a.txt的内容

# f.close()  #关闭文件
# print(f)  #<_io.TextIOWrapper name=‘a.txt‘ mode=‘rt‘ encoding=‘utf-8‘>
# f.read()
# del f  # 删除变量名f 正常情况下不需要删除

# 可以打开多个文件
# with open(r‘a.txt‘, mode=‘rt‘, encoding=‘utf-8‘) as f,#        open(‘b.txt‘,mode=‘wt‘,encoding=‘utf-8‘) as f1:
#    pass

文件打开模式

# 1、控制文件读写操作的模式
# r(默认)
# w
# a

# 2、控制文件读写内容的模式
# t(默认的):读写都是以字符串为单位的,只适用于文件文件,必须指定encoding参数
# b:读写都是以bytes为单位的,适用于所有文件,一定不能指定encoding参数


# r模式:只读模式,如果文件不存在则报错,文件存在则文件指针处于文件开头

# f = open(‘a.txt‘,mode=‘rt‘,encoding=‘utf-8‘)
# # print(f.read())  # 显示文件内容,显示所有a.txt信息,且光标移动到最后
# # print(‘=‘*50)	# 分隔符号
# # print(f.read())  # 从上面光标位置开始读取内容 ,显示内容为空 
# print(f.readable())  # True	
# print(f.writable())  # False
# f.close()  # 关闭

# w模式:只写模式,如果文件不存在则创建空文档,文件存在则清空,文件指针处于文件开头
# 简单记忆:w模式下每次都是新建文件将之前的原文件覆盖,必须要备份以免数据丢失
# f = open(‘a.txt‘,mode=‘wt‘,encoding=‘utf-8‘)
# # f.write("你好\n")
# # f.write("哈哈哈\n")
# # f.write("我擦勒\n")
#
# f.write("你好\n哈哈哈\n我擦勒\n")  # 覆盖a.txt文件,显示上述内容
# # print(f.readable())  #False
# # print(f.writable())  #True
#
# f.close()  #关闭
# 总结:w模式,在打开了文件不关的情况下,连续的write写入,新写的内容永远跟在后面

# a模式:只追加写模式,如果文件不存在则创建空文档,文件存在不会清空,文件指针处于文件末尾
# f = open(‘c.txt‘,mode=‘at‘,encoding=‘utf-8‘)
# # f.write("4444\n")
# # f.write("555\n")
# # f.write("6666\n")  # a模式永远写在后面
# print(f.readable())  # False
# print(f.writable())  #True
# f.close()  #关闭

# 总结:a模式,在打开了文件不关的情况下,连续的write写入,新写的内容永远跟在后面,这一点与w模式相同
#    不同的是,在打开了文件关闭然后重新打开的情况下,a模式永远写在后面


# b模式:读写都是以bytes为单位的,适用于所有文件,一定不能指定encoding参数
# with open(‘1.mp4‘,mode=‘rb‘) as f:  # 视频格式
#     res = f.read()
#     print(res.decode(‘utf-8‘))  # 报错 不能解码


# with open(‘a.txt‘,mode=‘rb‘) as f:  # 文本文件
#     res = f.read()
#     print(res.decode(‘utf-8‘))  # 文本文件 可以解码读取内容


# with open(‘a.txt‘,mode=‘ab‘) as f:
#     f.write("啊手动阀手动阀".encode(‘utf-8‘))  # 直接在文件最后追加


# 例:文件拷贝功能
# # 方案一: #整体复制,缺陷:
# with open(‘1.mp4‘,mode=‘rb‘) as f1,open(r‘D:\1111111.mp4‘,mode=‘wb‘) as f2:
#     res = f1.read()
#     f2.write(res)
#     f2.write(f1.read)  #复制文件至指定位置

# 方案二: 
# 储备知识: #
# with open(‘a.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as f:
#     # f.read()
#     for line in f:
#         print(line,end=‘‘) # end‘‘可以删除\n 不加的话每行之间会有空格


# with open(‘1.mp4‘,mode=‘rb‘) as f:
#     for line in f:
#         print(line)  # 解码后跳出二进制码

# 具体实现:
# with open(‘1.mp4‘,mode=‘rb‘) as f1,open(r‘D:\1111111.mp4‘,mode=‘wb‘) as f2:
#     for line in f1:  # 将1.mp4转码后进行分行复制
#         f2.write(line)  # 将分行后逐条内容复制到f2指定的位置


# 可读可写  # 如下命令不怎么使用
# r+t
# w+t
# a+t
#
# r+b
# w+b
# a+b

# with open(‘a.txt‘,mode=‘r+t‘,encoding=‘utf-8‘) as f:
#     print(f.readable())  # True
#     print(f.writable())  # True
#     print(f.read())  
#     f.write("22222222222222222222\n")  # 在文件最后添加新增的内容



# with open(‘a.txt‘,mode=‘w+t‘,encoding=‘utf-8‘) as f:
#     print(f.readable())   # True
#     print(f.writable())   # True

文件操作的其他方法

# readline :任意str格式
# readlines:将文件所有信息按照行,生成列表形式

# with open(‘a.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as f:
#     # lines = f.readlines() # 
#     # print(lines)
#
#     print(f.readline())  # a.txt文件第一行
#     print(f.readline())  # a.txt文件第二行


# with open(‘a.txt‘,mode=‘wt‘,encoding=‘utf-8‘) as f:
#     # f.write("111\n222\n333\n")  #新建文件覆盖内容
#
#     # lines = [‘111\n‘,‘222\n‘,‘3333\n‘]
#     # for line in lines:
#     #     f.write(line)  # 列表中的值对应分行显示在a.txt文件中
#
#     # f.writelines(lines)  # 在文件最后新增lines信息
#
#     f.write(‘hello‘)  #新建文件 覆盖原文件内容
#     f.flush()  #刷新
#     # f.writelines(‘hello‘)  # 在文件最后新增lines信息 
#

控制文件指针移动

# 大前提:只有t模式下的,f.read(n)中的n代表的是字符个数,除此以外,关于指针的移动,单位都是字节bytes
# a.txt:hello你好
# t模式情况:字符
# with open(‘a.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as f:
#     res = f.read(6)  # hello你
#     print(res)  # hello你

# b模式:字节
# with open(‘a.txt‘,mode=‘rb‘) as f:
#     # res = f.read(6)  #报错 显示“你” 的1/3字节无法解码
#     res = f.read(8)  
#     print(res.decode(‘utf-8‘))  #hello你

# f.truncate() #打断
# with open(‘a.txt‘,mode=‘r+t‘,encoding=‘utf-8‘) as f:
#     f.truncate(3)  #hel 之后的清除

# f.seek移动的全都是字节个数
f.seek(字节个数,0)  # 设置原位
f.seek(字节个数,1)  # 设置光标移动到什么位置,再从什么位置开始
f.seek(字节个数,2)  # 设置光标在末尾

python知识心得09

原文:https://www.cnblogs.com/ws7788/p/14863754.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!