文件#Python

1.读文件

模式含义
file.readall读入整个文件
file.read(size=-1)从文件中读入整个文件内容,如果给出参数,读入前size长度的字符串或字节流
file.readline (size=-1)从文件中读入一行内容,如果给出参数,读入前size长度的字符串或字节流
file.readlines(hint=-1)从文件中读入所有行,以每行元素形成一个列表,如果给出参数,读入hint行

打开文件
路径 :

        相对路径:(你的程序在哪里运行)

        绝对路径:直接copy absolute path
        
        *在windows的文件绝对文件路径前加 r 防止 \ 产生歧义 ,因为 \ 本身有换行的意思*

内置函数open的模式(mode):

                    r:只读模式,文件不存在时抛出异常
                    t:文本文件模式
                       
                    rb.表示读取文件原始的二进制(r:read 读;b:binary二进制)
                    
                    rt.能够读取文本内容
#打开文件(打开已经创建好的文件)
file_object=open('读文件',mode='rb')#返回路径二进制


#b'\xe5\xa4\xa7\xe5\xae\xb6\xe5\xa5\xbd\r\n\xe6\x88\x91\xe6\x98\xaf\xe9\xbd\x90\xe6\x96\x87\xe9\x9d\x99'

file_object=open('读文件',mode='rt',encoding='utf-8')  #返回文本内容


#读取文件内容,赋值给data
data=file_object.read()

text=data.decode('utf-8') #也可以提取文本内容

print(text)

#关闭文件
file_object.close()

print(data)

如果文件不存在就会报错

那么我们可以来写一段判断文件是否存在的代码

import os  #查询绝对路径

exists=os.path.exists('文件名')

print(exists)

#如果文件存在返回:ture  文件不存在:false


2.写文件

Python提供了3个与文件内容有关的方法

函数模式功能
file.write()向文件中写入字符串或字节流,并返回字符的数目
file.writelines()向文件中写入一个字符序列

file.write()函数

with open("D:\data2.txt","w") as file:
    num=file.write("hello python\n Everyday is new")
    print("向文件中写入%d个字符"(num))
    #这时会creat一个data2的文件,文本内容为:
    hello python
 Everyday is new
 #write()每次写入后并不会主动换行,而是在上次写入的数据之后继续写入数据,想要写入一行的数据,可以在末尾添加换行符"\n"
 

向data1.txt之后追加新内容

str=input("请输入内容:")
with open("data1.txt","a",encoding="utf-8") as file:
    file.write("\n")
    numb=file.write(str)
    print("向文件中追加字符%d个"%(numb))

在这里插入图片描述

file.writelines()函数

str=['当蜘蛛网无情地查封了我的炉台,\n','当灰烬的余烟叹息贫困的悲哀']
with open("data3.txt","a",encoding='utf-8') as file:
    file.writelines(str)
    print("写入字符序列成功!")

打开文件

路径:

  	t1.txt (实现创建好的文件)

内置函数open的模式:

			   wb(要求写入的内容是字节类型(二进制))
            w:覆盖写模式,文件不存在自行创建,存在则覆盖
            t:创建写模式,文件不存在则创建,存在则抛出异常
            a:追加写模式,文件不存在则创建;存在则在文件最后追加内容
#打开文件
file_object=open("t1.txt",mode='wb')
#2.写入内容

file_object.write("这里的山路十八弯".encode("utf-8"))
#==注意:写入时是utf-8 下次打开也是utf-8==

file_object=open("t2.txt",mode='wt',encoding='utf-8')
#如果原来没有文件t2.txt会自行creat一个

file_object.write("我的青春小鸟一去不回来")
#关闭文件
 file_object.close()

#图片文件
f1=open("a1.png",mode='rb')
content=f1.read()
f1.close()
f2=open('a2.png',mode='wb') #会自动creat一个a2.png的文件内容与a1.png一致
f2.write(content)
f2.close

3.文件读写位置

方法说明
file.tell()返回文件指针的当前位置
file.seek(offset,from)改变当前文件操指针的位置,offset代表偏移量,form的值:0,文件开头;1,文件位置;2,文件结尾
str='中国人民解放军JIEFANG'
with open("data3.txt","w") as fw:
	fw.write(str)
with open("data3.txt","r") as fr:
	print(fr.read(1))
	fr.seek(0)
	print(fr.read(1))
	fr.seek(2)
	print(fr.read(1))
	print(fr.tell())
	print(fr.seek(5,0))#相对于文件开头进行偏移
	

4. 案例

案例一:用户注册

user=input("请输入用户名:")

pwd=input("请输入密码:")

data="{}-{}".format(user,pwd) #拼接字符串

file_object=open("files/info.txt",mode="wt",encoding="utf-8")
#在files中找一个info.txt的文件,如果文件不存在自行创建

file_object.write(data)

file_object.close()

案例二:多用户注册

 w:写入文件,先清空文件在写入文件内容
while True:
	    user=input("请输入用户名:")
	     if user.upper()=="Q":
	        break
	    pwd=input("请输入密码:")
	    data="{}-{}".format(user,pwd)
	    file_object=open("files/info.txt",mode="wt",encoding="utf-8")
	    file_object.write(data)
	    file_object.close()
	#运行结果:只保存最后的一对
	

改写

file_object=open("files/info.txt",mode="rt",encoding='utf-8')
while True:
    user=input("输入用户名:")
    if user.upper()=="Q":
        break
    pwd=input("请输入密码:")
    data="{}-{}".format(user,pwd)

    file_object.write(data)
  file_object.close()  

文件操作在各类软件中占有重要地位

python内置了文件对象,通过open()函数就可以指定模式打开文件并创建文件对象

文件读写方法都会自动改变文件指针位置

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值