文件处理

'''
文件处理
文件处理流程:
1.打开文件,得到文件的句柄并赋值给一个变量
2.通过句柄对文件进行操作
3.关闭文件
'''

# open()函数向操作系统要到句柄,然后赋值给了变量,就可以对文件进行操作;文件存在硬盘中,那么想要进行操作就需要加载到内存中;如果文件只打开不关闭,那么会浪费系统资源;
# f = open('笑纳', encoding='utf-8') # 引号里的其实就是路径,没有带绝对路径的话,就在当前目录下寻找;open()函数会检索当前系统的编码,encoding默认编码为系统的编码,win系统是gbk,必须与文件的编码一致才可以正确打开文件并进行操作
# data = f.read()
# print(data)
# f.close()


'''
文件打开模式
r:只读模式【默认模式,文件必须存在,不存在则抛出异常】
w:只写模式【不可读;不存在则创建;存在则清空内容】
x:只写模式【不可读;不存在则创建;存在则报错】
a:追加模式【可读;不存在则创建;存在则只追加内容】

'+'表示可以同时读写某个文件
r+:读写【可读,可写】
w+:写读【可读,可写】
x+:写读【可读,可写】
a+:写读【可读,可写】

'b'表示以字节的方式操作
rb或r+b
wb或w+b
xb或x+b
ab或a+b
'''

'''文件处理读操作'''
# f = open('笑纳', 'r', encoding='utf-8') # 默认打开文件是读模式mode='rt'

# read()读取文件全部内容
# print(f.read())

# readable()这个文件是否可读
# print(f.readable())

# readline()逐行读取,当文件内容读取完毕后,依旧还有函数需要执行,那么打印的是一行空白,不会报错;猜想:文件一行有换行符,print有默认换行符,所以end关键字不设置,逐行打印出来的内容就会有一行空白
# print(f.readline(), end='')
# print(f.readline())
# print(f.readline())
# print('第四行:', f.readline())

# 当执行了read()函数,把文件内容全部读取完毕后(光标移到了文件末尾),再执行readline()函数,那么没有内容可打印,打印的是空白
# print(f.read())
# print('逐行读取:', f.readline())

# readlines()把文件内容放进一个列表,每一行内容作为一个元素,并且内容包括
换行符
# print(f.readlines())
# f.close()

'''文件处理写操作'''
# f = open('笑纳', 'w', encoding='utf-8')

# write()写入内容,如果写入的内容不加入换行符,那么不会进行换行的操作
# f.write('这是“w”写操作!
')
# f.write('这是第二行
这是第三行
这是第四行
')

# writable()是否可写入
# print(f.writable())

# writelines()用于向文件中写入一序列的字符串(或单个字符串),列表每个元素如果加入了换行符,那么算是一行的内容
# f.writelines(['这是第五行
', '这是第六行不加换行符', '第六行结果是什么样呢
']) # 文件写入的内容只能是字符串类型
# f.close()

'''文件处理追加操作'''
# f = open('笑纳', 'a', encoding='utf-8')

#方法与写操作一样,只不过不会清空文件内容;追加到文件最后的位置

# f.write('写到文件最后!1')
# f.write('写到文件最后!2')
# f.close()

'''文件处理其它模式'''
# 文件修改的本质其实就是覆盖;比如win系统打开一个文件是通过软件打开,软件读取文件内容到内存当中,然后可以进行修改,再把所修改的内容覆盖原文件(或新建新文件)
# f = open('笑纳', 'r+', encoding='utf-8')

# f.write('sb') # r+模式下的write(),通过光标所在位置进行修改字符串内容;默认的话是第一个字符开始往后修改,比如('123')会被改成('sb3')
# data = f.read()
# print(data)
# f.close()

'''修改文件内容并把修改后的内容保存到其它文件(先以'r'读的方式获取文件内容的列表赋值给一个变量,然后以'w'写的方式对列表的元素(即字符串)进行操作即可)'''
# 代码过长,找合适位置输入一个并回车即可分行
# with open('笑纳', 'r', encoding='utf-8') as f,
#     open('笑纳1', 'w', encoding='utf-8') as f1:
#  data = f.readlines()
#  f1.writelines(data[0].replace('接', '不接'))
while True: print('studying...')
原文地址:https://www.cnblogs.com/xuewei95/p/14441590.html