文件读写

# 文件操作
# 1、打开文件,得到文件句柄并赋值给一下变量
# 2、通过句柄对文件进行操作
# 3、关闭文件

# 文件的读操作
f = open('test.txt', 'r', encoding='utf-8')  # 文件打开的模式 r(只读),默认为只读

# read() 读取所有的文件内容,读取完后,光标到文件末尾
data = f.read()

# readable() 代表文件是否可读
print(f.readable())

# readline() 读取一行,光标到下一行
print(f.readline(), end='')
print(f.readline(), end='')
print(f.readline(), end='')
print(f.readline(), end='')


# readlines() 把文件每行内容都读取出来放在一个列表中
print(f.readlines())
f.close()

# 文件的写操作
f = open('test1.txt', 'w', encoding='utf-8')  # w(只写),如果文件存在,清空文件内容,如果文件不存在创建空文件

# writable() 代表文件是否可写
print(f.writable())

# write() 写入文件,如需要换行需要自己添加

f.write('1111111111111
')
f.write('2222222222222
')

# writelines() 使用列表进行多行写入
f.writelines(['1111
', '2222
'])
f.close()

# 文件的追加操作
f = open('test2.txt', 'a', encoding='utf-8')  # a(追加) 可读,文件不存在则创建,存在则只追加内容
f.write('111
')
f.close()


# 其它文件的模式
# w 只写模式 不可读,不存在则创建,存在则报错
# r+ 读写:可读可写
# w+ 写读:可读可写
# x+ 写读:可读可写
# a+ 写读:可读可写

# b 表示以字节的方式操作,不能使用encode参数
# rb 或 r+b
# wb 或 w+b
# xb 或 x+b
# ab 或 a+b

f = open('test.txt', 'rb')
data = f.read()
print(data.decode('utf-8'))  # 想要查看读取的内容,必须使用decode进行转换为utf-8
f.close()

f = open('test.txt', 'wb')
data = bytes('hello world', encoding='utf-8')  # 必须把要写入的内容转换为2进制
f.write(data)
f.close()

# closed 判断文件是否被关闭
print(f.closed)

# 将文件在内存中的数据即时保存在硬盘中
f.flush()

# 一个回车在windows系统中代表
,在linux系统中代表

# python会自动将
转换为
,可以使用newline=''来取消它的自动转换
f = open('test.txt', 'r', encoding='utf-8', newline='')

# 显示文件文
print(f.name)

# 显示当前光标所在的位置
print(f.tell())

# seek() 用来控制光标的移动
f.seek(0)  # 只要不是read方法(按字符),其余的移动都是按字节
f.seek(10, 0|1|2)  # 三种模式,0表示从文件开头,1表示相对于光标上次的位置,2表示从文件未尾向前,前一个参数必须为负数。
# 使用1,2这两个模式时,文件模式必须为b模式

# truncate() 文件截取
f.truncate(10)  # 要使用r+或a+(不能使用w,或w+,因为w与w+会清空文件),保留开始到10个字节,其它都删除
原文地址:https://www.cnblogs.com/dangrui0725/p/9420771.html