''' 文件处理 文件处理流程: 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...')