人工智能系列-Python系列(六)文件操作

转载请注明预见才能遇见的博客:http://my.csdn.net/

原文地址:https://blog.csdn.net/pcaxb/article/details/91982984

人工智能系列-Python系列(六)文件操作

目录

人工智能系列-Python系列(六)文件操作

一、文本模式打开文件

1.读文件

1)判断是否可读

2)读取一行,如果使用了read读取了,就是整个文件都读取了,就不能再读取

3)读取文件所有内容,然后放到列表中

2.写文件

1)判断是否可写

3.追加文件

4.读写文件

5.修改文件

6.with xxx as xxx文件

7.关闭文件

二、非文本模式打开文件

1.b的方式不能指定编码

 2.二进制和其他编码互转

1)二进制转换成uft-8

2)uft-8换成二进制

三.文件的其他函数

1.如果不知道文件编码,就使用latin-1 ,拉丁编码基本都支持

2.判断文件是否关闭

3.文件编码

4.刷新文件,修改文件之后需要刷新文件,不然文件就是没有保存的

5.文件内光标移动

1)read(3):

2)其余的文件内光标移动都是以字节为单位如seek,tell,truncate

6.读取文件中真正的换行符号newline

7.seek移动光标的位置


一、文本模式打开文件

# 注意 open这里读取的格式是系统格式,所以这里需要设置文件格式
# 打开文件,得到文件句柄并赋值给一个变量
# r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
# w,只写模式【不可读;不存在则创建;存在则清空内容】
# a, 之追加写模式【不可读;不存在则创建;存在则只追加内容】
# 扩展:
# "+" 表示可以同时读写某个文件
# r+, 读写【可读,可写】
# w+,写读【可读,可写】
# a+, 写读【可读,可写】
# file1 = open("file1", 'r+', encoding='utf-8')

1.读文件

# 通过句柄对文件进行操作
# data = file1.read()  # 默认情况是只读
# print(data)  # 打印文件内容

1)判断是否可读

print(file1.readable())  #

2)读取一行,如果使用了read读取了,就是整个文件都读取了,就不能再读取

print(file1.readline())

3)读取文件所有内容,然后放到列表中

print(file1.readlines())

2.写文件

# file1.write('1-2222222222\n')
# file1.write('2-2222222222\n')
# file1.write('3-2222222222\n')

1)判断是否可写

# print(file1.writable())  #
# names = ['111\n', '222\n', '333\n']  # 文件内容只能是字符串
# file1.writelines(names)

3.追加文件

# 如果 open("file1", 'a', encoding='utf-8') 这里的模式设置的是a ,write就是追加写

4.读写文件

# file1.write("kkkk") # 这里是覆盖文件
# content = file1.read()
# print(content)

5.修改文件

# 把文件中的111全部替换成一一一
# datas = file1.readlines()
# datasc = []
# print(datas)
# for data in datas:
#     data = data.replace('111', '一一一')
#     datasc.append(data)
# print(datasc)
# file1.writelines(datasc)

# file1.write("HHHH")

6.with xxx as xxx文件

# with open('file1','r+',encoding='utf-8') as f1:

# with open('file1', 'r', encoding='utf-8') as f1, \
#         open('file2', 'w', encoding='utf-8') as f2:
#     f1_data = f1.read()
#     f2.write(f1_data)
#     f1.close()
#     f2.close()

7.关闭文件

file1.close()

二、非文本模式打开文件

# 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,
# 使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)
# rb、wb、ab
# 注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

1.b的方式不能指定编码

# file1 = open('file1', 'rb+')
# data = file1.read()
# print(data)  # rb读取的是二进制

 2.二进制和其他编码互转

# encode:字符串--bytes
# decode:bytes--字符串

1)二进制转换成uft-8

# print(data.decode('UTF-8'))  # 二进制转换成uft-8

2)uft-8换成二进制

# file1.write('===你你你'.encode('utf-8'))
# file1.write(bytes('+++我我我', encoding='utf-8'))

三.文件的其他函数

1.如果不知道文件编码,就使用latin-1 ,拉丁编码基本都支持

file1 = open('file1', 'r', encoding='UTF-8')

2.判断文件是否关闭

print(file1.closed)  # False

3.文件编码

print(file1.encoding)  # utf-8

4.刷新文件,修改文件之后需要刷新文件,不然文件就是没有保存的

# file1.flush()
# print(file1.name)  # file1 文件名字

5.文件内光标移动

1)read(3):

# a)文件打开方式为文本模式时,代表读取3个字符
# b)文件打开方式为b模式时,代表读取3个字节

2)其余的文件内光标移动都是以字节为单位如seek,tell,truncate

# a)seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的
# b)truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果
# tell 光标所在位置
# print(file1.tell())  # 0
# file1.readline()
# print(file1.tell())  # 18

6.读取文件中真正的换行符号newline

file2 = open('file2', 'r', encoding='utf-8', newline='')
print(file1.readlines())
print(file2.readlines())

7.seek移动光标的位置

# file1.seek()
file1.seek(5)
print(file1.tell()) # 5
file1.seek(32)
print(file1.tell())
参考资料;https://www.cnblogs.com/linhaifeng/articles/5984922.html

人工智能系列-Python系列(六)文件操作

博客地址:https://blog.csdn.net/pcaxb/article/details/91982984

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值