zoukankan      html  css  js  c++  java
  • Python文件处理

    文件操作分为读、写、修改。

    一、读取文件。
    
    	f = open(file="D:/文件/p1.txt",mode='r',encoding='utf-8')
    				  绝对路径。
    				  
    	f = open(file = "p1.txt", mode='r', encoding='utf-8') 
    	打开   文档 =  路径(文档名称)方式可读  解码:存文件时候的编码
    	data = f.read()       读取f的内容存一个变量叫data。
    	print(data)    打印。
    	f.close()      结束程序。
    	注:f.read(1)  #读取返回文件内字符1的内容。按字符返回。
    
    二、二进制模式:
    	f = open(file='p.txt',mode='rb')    #一般用于网络传输。
    	打开   路径        以二进制读到p.txt    r,文本只读模式, b:二进制
           
    三、智能检测编码的工具:在不知道编码的情况下使用。
    	1、首先安装第三方工具箱:pip:python第三方工具包。   chardet 
    	2、f = open(file='p.txt',mode='rb')
    		 #打开   路径        以二进制读到p.txt    r,文本只读模式, b:二进制
    	3、import chardet
    	f = open('p.txt',mode='rb')  #以rb模式打开
    	data = f.read()    #存入变量data,以read模式。
    	f.close()     #结束写代码。
    
    	4、chardet.detect(data)  #查看字符编码是什么。查出来是gbk2312
    	5、data.decode('gbk2312')  #解码成gbk2312
    
    四、写模式操作文件:读一点文件处理一点,避免大文件占用内存。
    	循环文件:文件内的字符串还自动出现换行键。Print本身就会换行。
    	f = open('p.txt',mode='rb',encoding='gbk')   
    	for line in f:    #循环f这个文件,每次取一行来处理。
    		print(line)
    	f.close()
    	写文件:w:创建。  或者wb,b二进制。
    	f = open(file='p6.txt',mode='wb',encoding='utf-8')    #以二进制模式写进文件。
    	f.write('张三25,手机号:1336856248') #w创建一个新文件,会将以前的文件清空。
    	注:write的时候文件是临时存在内存buffer里。当buffer满了,或者close结束写代码的时候才会存硬盘上。
    	f.close()     结束写代码。
    
    五、追加模式操作文件:   把文件追加到文件尾部。
    	f = open(file='p6.txt',mode='ab',encoding='utf-8')    #a 插入。默认插入到尾部。
    	f.write('
    张三25,手机号:1123654248')     #
     换行插入。
    	f.close()    结束代码。
    
    六、混合操作文件。
    	读写模式:‘r+’ 先读后写,支持往后追加。
    	f = open(file='cld.txt',mode='r+',encoding='utf-8')
    	data = f.read()
    	f.write('
    张三,手机:')
    	f.write('
    李四,手机:1234567')
    	f.close()
    
    	写读模式:’w+’   以写的模式打开,就是以创建的形式。支持读,支持读前面写进去的内容。
    	f = open(file='cld.txt',mode='w+',encoding='utf-8')
    	data = f.read()
    	f.write('
    王五,手机:12345678912')
    	f.write('
    赵六,手机:1234567')
    	f.close()
    
    七、文件操作其它功能:
    
    	def fileno(self,*args,**kwargs): #real signature unknown
    		#返回文件句柄在内核中的索引值,以后做IO多路复用时可以用到。
    	def flush(self, *args, **kwargs): #real signature unknown
    		#把文件从内存buffer里强制刷新到硬盘。#buffer的大小可以调整。
    		示例:f = open(file='p6.txt',mode='w',encoding='utf-8')    
    			  f.write('张三25,手机号:1336856248') 
    	       注:write的时候文件是临时存在内存buffer里。当close结束写代码的时候才会存硬盘上。
    	          f.flush( )    #强制将write临时存在内存的文件,强制存进硬盘。
    
    	def readable(self,*args,**kwargs):  #real signature unknown
    		#判断是否可读。判断的是linux下的特殊文件。也可以判断文件。
    	def readline(self,*args,**kwargs):   #real signature unknown
    		#只读一行,遇到
     or 
     为止。  
    		单行读,有换行的位置终止,读到哪一行光标就在哪一行。
     
    	def seek(self, *args, **kwargs):  # real signature unknown 
    		#把操作文件的光标移动到指定位置(按字节,根据utf8的占用)
    		#  *注意seek的长度是按字节算的,字符编码存每个字符所占的字节长度不一样。
    		# 如‘路费学成’用gbk存是2个字节一个字,用utf-8就是3个字节,因此以gbk打开时,seek     
    		# 但如果是utf-8,seek(4)会导致,拿到了飞这个字的一部分字节,打印的话会报错,因为处  理剩下的文本时发现用
    		示例:f.seek(0)    #把光标移动到0开头的位置。数值读的是字节(byts)。
    	def seekable(self,*args,**kwargs):   #real signature unknown
    		#判断文件是否可进行seek操作。
    	def tell(self, *args, **kwargs):  # real signature unknown
    		# 返回当前文件操作光标位置。
    		示例:f.tell()  查看光标所在文件内的位置。返回的值是按照字节(byts)计算的。
    	def truncate(self, *args, **kwargs):  # real signature unknown
    		# 按指定长度截断文件
    		# *指定长度的话,就从文件开头开始截断指定长度,不指定长度的话,就从当前位置到文件尾部的内容全去掉。
    		示例:f.truncate(8)    #从文件开头将光标移到8的位置,从8位置到尾部全部去掉。
    			  f.truncate()     #从光标当前位置截到文件最后的内容全部去掉。
    	def writable(self, *args, **kwargs):  # real signature unknown
    		# 判断文件是否可写。
    
    八、文件修改功能:
    	#文件的修改功能:占硬盘修改版。
    	import os    #引入os模块,os调用系统命令。
    
    	f_name = "dong.txt"   #源文件变量名称为f_name
    	f_new_name = "%s.new" %f_name   #新文件变量名为f_new_name
    
    	old_str = "李四"   #源文件内容李四。
    	new_str = "张三"   #修改成张三。
    
    	f = open(f_name,"r",encoding="utf-8")   #原文件以读的方式打开
    	f_new = open(f_new_name,"w",encoding="utf-8")  #新文件以写的方式打开。
    
    	for line in f:  #将f读模式,读出来的内容附到line
    		if old_str in line:     #判断line文件中有没有old_str‘常利东’
    			line = line.replace(old_str,new_str)     #将old_str,修改为new_str
    
    		f_new.write(line)    #将修改完的line写入到f_new
    
    	f.close()   #结束保存文件。
    	f_new.close()
    
    	os.rename(f_new_name,f_name)    #将新文件名,修改成源文件名。  系统会新文件覆盖就文件。
    

     文件操作功能总结:

    file = 'p1.txt'   #文档的 路径位置。
    
    mode = 'r'   #读取模式。  r读。
    mode = 'r+'   #读写模式,先读后写
    mode = 'rb'  # r读取,b二进制。以二进制读取。
    
    mode = 'w'   #创建文件。
    mode = 'w+'  #先写后读
    mode = 'wb'  #以二进制创建。
    
    mode = 'a'   #追加,插入默认追加到尾部。
    mode = 'ab'  #以二进制追加。
    
    read     #读文件内容。
    write    #写文件内容。
    import #引入   可引入第三方工具。chardet,os 。
    
    chardet#判断文件字符编码
    chardet.detect(data)  #查看字符编码是什么。
    
    
    encoding = 'utf-8'  #编码成UTF-8字符格式。
    data = f.read#读取F的内容到data
    chardet.detect(data)  #查看文件字符串编码是什么。
    data.decode('gbk2312')   #解码成gbk2312
    
    f.close#结束代码程序。
    
    #其它功能
    f.fileno()    # 返回文件句柄在内核中的索引值,以后做IO多路复用时可以用到。
    f.close()     # 把文件从内存buffer里强制刷新到硬盘。#buffer的大小可以调整。
    f.flush()  # 强制将write临时存在内存的文件,强制存进硬盘。
    f.readable()  # 判断是否可读。判断的是linux下的特殊文件。也可以判断文件。
    f.seekable()   # 判断文件是否可进行seek操作。
    f.writable()  # 判断文件是否可写。
    f.readline()  # 只读一行,遇到
     or 
     为止。
    f.seek()        # 把操作文件的光标移动到指定位置#  *注意seek的长度是按字节算的,字符编码存每个字符所占的字节长度不一样。
    f.tell()      # 返回当前文件操作光标位置。
    f.truncate()  # 按指定长度截断文件
    #  *指定长度的话,就从文件指定的位置开始截断指定长度,不指定长度的话,就从当前位置到文件尾部的内容全去掉。

     

  • 相关阅读:
    Hystrix解析(三)
    Hystrix解析(二)
    在阿里云开发平台编写第一个 HelloWorld 程序
    Jenkins与Docker的自动化CI/CD实战
    网页计数器例子
    ServletContext 对象
    Session
    Cookie
    Request 对象作用域
    转发,重定向(包括请求中文乱码解决)
  • 原文地址:https://www.cnblogs.com/qiandong/p/13228465.html
Copyright © 2011-2022 走看看