• python文件操作


    什么是文件

    文件是操作系统提供的读和写的虚拟文件,文件的操作基于文件,文件的核心操作就是读和些

    为什么要有文件

    内存无法永久保存数据,当数据需要被永久保存的时候,由操作系统将文件转换为二进制文件转而保存至硬盘,从而实现对文件的操作

    如何用文件

    文件读取

    当我们需要打开文件的时候,需要想操作系统发送请求,有操作系统发送给CPU各种操作系统资源占有等信息,python中用open()函数打开文件. 格式通常为open(r'/Users/mac/desktop/32.txt',mode= 'r',encoding = utf8)

    打开文件的目的是为了去读和写

    文件写入

    open(r'/Users/mac/desktop/32.txt',mode= 'w',encoding = utf8)当文件的打开模式为write写模式时,文件原数据会被清空掉,直接从头开始写入

    总结

    文件打开分为三步

    1. 打开文件
    2. 读写
    3. 关闭

    绝对路径相对路径

    1. 绝对路径的意思:从根目录开始,一直到文件所在位置
    2. 相对路径:和相对对象在同级目录的下面

    文件的三种打开方式

    1. r模式:r模式打开文件为只读

    2. w模式:w模式打开文件为只写(如果没有原文件则会新建,如果有原文件会清除原文件

    3. a模式:a模式打开文件会在末尾位置写入内容,如果没有的话,会直接新建文件,在文件后面写入内容

    4. b模式:b模式是通用的模式,因为所有的文件在硬盘中都是以二进制文件来存储的,需要注意的是:b模式读写文件,不一定能加上encoding参数,因为二进制无法再编码

    try:
    	import requests
    	response = requests.get(
    		'http://images.cnblogs.com/cnblogs_com/nickchen121/1447696/o_文件的三种打开模式-mv.jpg')
    		data = response.content
    )
    	f = open('mv.jpg', 'wb')
    	f.write(data)
    	print('done...')
    	f.close()
    except Exception as e:
    	print(e,'报错了,那就算了吧,以后会学到的')
    

    with管理文件操作上下文

    之前我们用open()方式打开文件,但是open打开文件之后还需要手动关闭文件去释放内存,这里python解释器提供了上下文管理工具---with open()

    with open('32.txt','rt',encoding = 'utf8') as f:
    	print(f.read)
    

    with open()函数会自己判断文件是否执行完闭,自己关闭文件释放内存占用,并且with open()可以一次性打开多个文件,之间用逗号隔开.

    文件高级应用

    可读可写(一般不推荐使用)

    1. r+t:可读可写
    2. w+t:可写可读
    3. a+t:可追加可读

    文件内指针的移动

    当我们需要文件内容中间的某一行增加内容,如果仅仅是基于可读可写的操作上,是很难实现的

    seek(offset,whence)

    seek(offset,whence):offset代表文件指针的偏移量,单位是字节

    with open('11.txt',mode='rt',encoding='utf8') as fr:
    	print(f'fr.seeka(4,0):{fr.seek(3,0)}') # 0相当于文件的开头位置,1相当于文件所在位置,2相当于文件末尾
    

    tell()

    tell():每次统计都是从文件开头到当前指针所在位置

    read()

    read(n):只有在该模式下,n代表的是字符个数,除此之外,其他涉及到指针的都是字节个数

    with open('11.txt','rt',encoding = 'utf8') as fr:
    	print(f'fr.read(3):{fr.read(3)}')
    

    truncate()

    truncate():是截断文件,所以文件的打开方式必须是可写,但不能用w或w+等方式打开,因为那样会直接清空文件,所以truncate()要在r+a+等模式下测试效果.它的参照物永远是文件头,并且truncate()不加参数,相当于清空文件

    with open('11.txt','r+t',encoding='utf8')
    	fr.truncate(3)
    

    修改问件内容的两种方式

    方式一:一次性读取所有

    将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,载由内存覆盖到硬盘

    import os 
    with open('11.txt') as fr,
    		open('11_swap.txt,'w') as fw:
    		
    	data = fr,read()
    	data = data.replace('thank', 's')
    	
    	fw.write(data)
    os.remove('11.txt')
    os.rename('11_swap.txt','11.txt')
    print ('done...')
    

    放式二:逐行读取

    将硬盘存放的该文件内容一行一行的读入内存,修改完毕就写入新文件,最后用新文件覆盖原文件

    import os 
    with open('2.txt') as fr,
    			open('2_swap.txt','w') as fw:
    	for line in fr:
    		line = line.replace('jason', 'jasonSB')
            fw.write(line)
            
    os.remove('2.txt')
    os.rename('2_swap.txt','2.txt.)
    print('done...')
    

    总而言之:修改文件的内容思路为:以读的方式打开原文件,以写的方式打开一个原文件,把原文件的内容进行修改,然后写入新文件,之后利用os模块的方法,将原文件删除,重命名新文件为原文件的文件名,达到修改的目的

  • 相关阅读:
    User Agent
    ASP.NET状态管理 APPlication,Session,Cookie和ViewStat用法
    HttpHandler
    转 此版本的 SQL Server 不支持用户实例登录标志。该连接将关闭“的解决
    跨服务器访问SQLSERVER
    sql字符串函数
    使用aspnet_regsql.exe 创建ASPState数据库,用来保存session会话
    SQL中CONVERT转化函数的用法
    Sql时间函数
    JS创建对象的几种方法
  • 原文地址:https://www.cnblogs.com/Dr-wei/p/10938276.html
Copyright © 2020-2023  润新知