zoukankan      html  css  js  c++  java
  • 文件操作

    python之文件

    1:什么是文件?

    文件:是操作系统为应用程序或者用户提供的操作硬盘的一个接口
    用户或者程序对文件的操作,都是调用操作系统来都写硬盘中的内容
    

    2:为什么要有文件?

    应用程序操作文件,是为了把内存中的数据永久保存到硬盘中
    

    3:如何使用文件?

    3.1:文件的基本操作
    文件的路径: '找到文件的具体位置'
    绝对路径:D:s9html01htmls2.html
    相对路径:当前文件夹,所在的文件位置html/s2.html
    
    f=open('b.txt', mode='rt', encoding='utf-8')
    print(f.read())
    f.close() 让操作系统释放资源
    
    
    3.2:文件模式
    1:控制文件读写内容的模式,不能单都是用,必需与‘raw'结合使用
    
    t:默认的
    	1,读写内容都是以字符串为单位
    	2,只适用于文本文件
    	3,必须制定encoding的参数
    b:	
    	1,读写内容以bytes为单位
    	2,适用于所有文件
    	3,一定不能指定encoding参数
    
    
    2:控制文件读写操作的模式
    r:默认的
    	1,只读模式
    	2,当文件不存在时则报错
    	3,当文件存在时,文件指针跳到文件开头
    f = open('b.txt', mode='r', encoding='utf-8')
    print(f.read())
    f.close()
    
    w:
    	1,只写模式
    	2,当文件不存在会创建一个空文件,然后文件指针跳到文件开头
    	3,当文件存在时内容会被清空,然后文件指针跳到文件开头
    f = open('c.txt', mode='w', encoding='utf-8')
    f.write('alex
    ')
    f.write('dsb
    ')
    f.write('coce
    ')
    f.close()
    
    a:	
    	1,只追加模式
    	2,当文件不存在会创建一个空文件,然后文件指针跳到文件末尾
    	3,当文件存在时文件内容不会被清空,然后文件指针跳到文件末尾
    	
    	
    a与w的区别
    	相同点:在文件操作打开了没有被关闭情况下,连续的写入,新写入的内容总是在老的内容之后
    	不同点:在文件关闭了重新打开的情况下,a模式永远把文件指针放到文件末尾
    	
    
    

    案例:

    案例一:编写一个用户注册功能,注册的内容是账号名和名
    
    name = input('请输入你的姓名')
    pwd = input('请输入你的密码')
    
    f = open('info.txt',mode='a',encoding='utf-8')
    f.write('{}:{}'.format(name,pwd))
    f.close()
    
    
    案例二:编写一个用户验证功能,账号密码来自于文件
    name = input('请输入你的姓名')
    pwd = input('请输入你的密码')
    
    f = open('info.txt',mode='r',encoding='utf-8')
    for name, pwd in f.read():
    	if name == name and pwd == pwd:
    		print('登陆成功')
    else:
    	print('用户名或者密码错误!')
    
    
    3:with上下文管理
    with open('text.text',mode='a',encoding='utf-8') as f:
        f.write('你好
    ')
        f.write('你好
    ')
        f.write('你好二呀
    ')
    
    
    
    f = open(r'text.text', mode='a', encoding='utf-8') 
     f.write('你好
    ') 
        f.write('你好
    ')
        f.write('你好二呀
    ')
    f.close() # 通知系统回收资源,with是有一种机制让操作系统回收资源
    
    
    
    3.4:bytes模式
    with open('a.txt',mode='rt') as f:
        print(f.read())
        print(type(f.read()))
     上述代码报错
     a.txt是以utf-8编码的格式存储在硬盘中(内容还是二进制存的)
     因为内容存储在硬盘中都是以二进制形式存储的,但是读取的时候计算机把,二进制安照一张表(翻译了一下,展现出来)
     
    
    t:模式只能适用于文本文件
    b:模式适用于所以类型文件(不能单独使用)
    
    r:
    with open('a.jpg', mode='rb') as f:
        data = f.read()
        print(data.decode("utf-8"))
    print(type(data))
    
    
    with open('a.txt', mode='rb') as f:
        print(f.read().decode('utf-8'))
    
    w:
    with open('a.txt', mode='wb') as f:
    	f.write('hello word'.encode('utf-8'))
    	
    a:
    with open('a.txt', mode'ab') as f:
    	f.write('hellow word'.encode('utf-8))
    
    
    3.5文件操作方法
    read
    with open('a.txt',mode='rt' encoding='utf-8') as f:
    	print(f.read())
    	print(type(f.read()))
    
    write
    f = open('text.txt', mode='a',encoding='utf-8')
    for i in range(100000):
        f.write('{}次写入数据
    '.format(i))
        f.flush() # 表示有一条数据就写入硬盘中
    f.close()
    
    readline #一次拿一条数据
    with open('text.txt', mode='rt' ,eocoding="utf-8") as f:
    	print(f.readline())
    
    readlines #一次拿全部数据,但是一条一条给你(好像表达的也不准确)
    with open('text.txt', mode='rt' ,eocoding="utf-8") as f:
    	for line in readlines():
    		pirnt(line)
    
    3.6:+
    r+t = rwt
    w+t = rwt
    a+t = rat
    默认情况下t可以不写
    
    a+b = rwb
    r+b = rwb
    a+b = rab
    
  • 相关阅读:
    获取当前时间并格式化,CTime类
    疑问:VS在调试的过程中,总是会提示正在加载picface.dll的符号,然后卡死在那
    Markup解析XML——文档,说明
    .net Core 获取当前程序路径
    Excel中的细节
    心血来潮尝试一个小项目(WinForm)
    bat文件以管理员运行
    DataGridView一些总结
    常见辅助类、方法
    向txt文件中添加或者追加文字字符串
  • 原文地址:https://www.cnblogs.com/wait59/p/13096483.html
Copyright © 2011-2022 走看看