python文件的操作(day07)
今天学习了PYTHON中的文件操作,不仅学会了操作命令,更重要的是明白了python中,对文件的处理方式。、
1、读完文件后,文件指针会停留在文件的末尾,如果继续再次读文件时,将读取不到内容。
2、写文件时,会从文件的末尾写入,不允许在中间插入,或对中间的内容进行修改。
3、在写入文件时,会将写入内容保存在缓存区中, 并不会立即写入硬盘,如果想立即写入硬盘的文件中,可以用flush方法。
4、程序关闭时,会自动关闭打开的文件,不过要养成好的习惯,在程序结束前,关闭文件。
import sys,time for line in range(50): #利用 sys模块中的标准输入输出,来模拟进度条,验证FLUSH的使用。 sys.stdout.write("*") time.sleep(0.1) #等待 sys.stdout.flush() ''' file1=open("learn.txt",'r',encoding='utf-8')# 读的模式 file1=open("learn.txt","r+",encoding='utf-8')# 读写模式,这是一种比较常用的模式。 file1=open("learn.txt","w",encoding='utf-8')# 写的模式,如果文件存在,则会先清空文件。否则新建文件。 file1=open("learn.txt","w+",encoding='utf-8')#写读模式 ,比较鸡肋。 file1=open("learn.txt","a",encoding='utf-8')#追加模式, file1=open("learn.txt","a+",encoding='utf-8')#追加读写模式。 file1=open("learn.txt","rb")#读二进制模式。还有相应的"wb',"ab"写二进制 追加二进制。 print(file1.readable())#是否可读 print(file1.writable())#是否可写 print(file1.seekable())#是否可转到其它位置。 print(file1.closed)#是否关闭。 file1.flush() #刷新内存,写入硬盘。用于实时操作,如银行存取。不用等缓存满了后再写,而是实时写入硬 盘。 print (file1.tell()) #这个TELL,能显示当前字符的位置。 file1.seek(100)#跳转到指定字符位置。 print (file1.encoding)#显示文件的编码标准,如显示 :UTF-8 print (file1.fileno()) #打开文件,操作系统IO接口中的编号,不需要关注。 #file1.write("\n这是文件的第二行")#写入。 ''' ''' 这两种循环方式应用于小文件,不适合于大文件,在实际应用中不常用,知道即可。 for i in range(5): print (file1.readline().strip()) 读取一行 for index,line in enumerate(file1.readlines()): 将整个文件读到一个列表中。 print (index+1,':',line.strip()) 以下是高效的方法。 count=0 for line in file1: if count==3: print (str.center('我是分隔线',50,'-')) count+=1 continue print (line.strip()) count += 1 ''' file1=open("learn.text",'w+',encoding='utf-8') file1.truncate(10)#从指定位置截断。保留前边的,去提后边的。
file1.close()
修改文件内容的两种方法,提倡用第一种方法。
file1=open("learn.txt",'r',encoding='utf-8') file2=open("learn.bak","w",encoding="utf-8") for linetxt in file1: if "第三行" in linetxt: linetxt=linetxt.replace("第三行","分隔线")#通过将旧文件中的内容写入新文件的方法,进行修改。 file2.write(linetxt) file1.close() file2.close()
1 file1=open("learn.txt",'r',encoding="utf-8") 2 file_data=file1.readlines() 3 file1.close() 4 temp_txt_data='' 5 for line in file_data: 6 if "第三行" in line: 7 line=line.replace("第三行","分隔线")#整个读出后,再进行写入,不提倡这种方法。 8 temp_txt_data+=line 9 print (line) 10 file2=open("learn.txt",'w',encoding="utf-8") 11 file2.write(temp_txt_data)
12 file2.close()