python|文件读写

python文件读写

Python操作文件的基本语法格式:

with open(r'文件路径',mode='文件操作模式',encoding='utf8') as f:

​         文件具体操作代码

注意:
1.其中变量名是指向打开文件的句柄(可以任意替换为其他有效变量名)

2.文件路径可以是相对路径,也可以是绝对路径。

3.open方法只能用于读取txt、csv等文本文件,不能读取word、excel等第三方文件,第三方文件必须用专门的库才能操作。#读取一个文件中的信息,并打印出来

with open('../day01/d' ,mode='r',encoding='utf8') as file:
    print(file.read())
#自动创建一个文件,并写入一段文字
with open('2.txt', mode="w", encoding='utf8') as f:
    f.write("爱哭的复活节卡萨丁咖啡机看看水电费")
#这是接收列表格式,写入大量数据时,速度较快
    f.writelines(["haidknfjoasnkdlfjo asdjf asndfj kaldsjf knasjk fnalds fasd f"])

#读取一个文件中的信息,并打印出来
with open('2.txt',mode='r+' ,encoding='utf8') as file:
    print(file.read())

常用文件的读取方式

f.read() # 一次性读取所有文件内容

f.read(100)#读取参数指定的字符长度

f.readline() #读取一行内容,如果指定数字则只读取一行中指定的字符数

f.readlines() #按行读取全部内容到一个列表中

for line in f:# 直接通过一个循环来读取文件

文件操作模式:

r只读

r+读并更新

w 覆盖写入 根据文件名称判断文件是否存在,不存在会自动创建文件(只创建在当先目录下)

a追加写入

以w模式打开文件

写数据的几种方法(如果要换行必须自己添加换行符)

以字符串形式写入:

f.write(“要写入的字符串”)

以列表形式写入:

f.writelines(list_of_text_strings)

注意,在写入大量内容时,调用writelines写入多行在性能上会比使用write一次性写入要高

练习题

1、定义一个模块(xxx.py的文件)

模块里面具有三个类

厨师类:炒菜方法

服务员类:接待客人方法 送走客人方法

收银员类:收钱方法

实现:客人来-->服务员接待-->客人点菜-->厨师炒菜-->客人吃完了-->收银员收钱-->服务员送客

class Waiter(object):
    def __init__(self,num,diancai,money):
        self.num = num
        self.diancai = diancai
        self.money = money
    def Jiedai(self):
        return f"接待了{self.num}客人,客人点了{self.diancai}"
    def Songke(self):
        return "服务员送客"

class Chushi(Waiter):
    def chaocai(self):
        return f"厨师炒了{self.diancai}"

class Shouqian(Waiter):
    def __init__(self, fq, num, diancai,money):
        super().__init__(num, diancai,money)
        self.fq = fq
    def Sq(self):
        return f"客人吃完,给了{self.fq}元,找零{self.fq-self.money}"

a = Chushi(2,"松子鳜鱼",1000)
b = Shouqian(2000,2,"松子鳜鱼",1000)
print(a.Jiedai(),'\n',a.chaocai(),b.Sq(),a.Songke())

2、解释面向对象中的几个重要概念

类:类就是对具有相同属性的一种描述

对象:类的实例化,对象可以调用类下的属性和方法

实例属性:用init 构造方法去定义的

实例方法:就是普通的函数,括号中是(self)

类属性:直接定义在类下的变量

类方法:需要加 @classmethod 装饰器,区别是类方法的括号中是cls (cls)

self 和 cls关键字:

self是实例方法的隐藏参数,可以通过self进行实例属性和方法值之间的来回调用

cls是方法的隐藏参数,可以通过self进行类属性和方法值之间的来回调用

3、使用面向对对象的方式实现,模拟一个注册和登录的场景用户注册时,需要输入账号和密码,保存账号与密码。在登录时,我们去验证输入的账号与密码,是否是已经注册,已经注册提示已注册可以登陆, 未注册提示无法登陆未注册。

class zhuche:
    def __init__(self,user_name,pass_word):
        self.u_name=user_name
        self.u_pass=pass_word
    def zc(self):
        a=(self.u_name,self.u_pass)
        print(f'注册成功,账号密码是{a}')

class Login(zhuche):
	def __init__(self,name,pwd,user_name,pass_word):
		super().__init__(user_name,pass_word)
		self.name=name
		self.pwd=pwd
	def dl(self):
		a=(self.u_name,self.u_pass)
		b = (self.name,self.pwd)
		if a[0]==b[0] and a[1]==b[1]:
			print('已经注册,登陆成功')
		elif a[0]==b[0] and a[1]!=b[1]:
			print('账号正确,密码错误,登录失败')
		elif a[0]!=b[0] and a[1]==b[1]:
			print('账号错误,密码正确,登录失败')
		else:print('账号密码都错误')
yy=Login(user_name = 'user001',pass_word = 123456, name= 'ssss',pwd = 123456)
yy.dl()

4、使用类的方式实现一个聊天记录保存功能,不断获取用户输入信息,保存到'log.txt'文件并读取文件内容。

class bclt:
    def baoc(self):
        while True:
            ms = input("请输入聊天内容:")
            if ms != "结束":
                with open('log.txt', mode='a', encoding='utf8') as f:
                    f.write(ms)
            else :
                break

    def read(self):
        with open('log.txt', mode='r', encoding='utf8') as f2:
            print(f2.read())

b = bclt()
b.baoc()
b.read()

匿名函数

语法:变量名= lambda 参数名1,参数名2,参数名3: 参数名的代码

创建一个匿名函数,实现两个数相乘

a = lambda x,y:x*y
print(a(10,200))

两个输出的结果一致

def hs(x,y):
    return x * y
print(hs(1,33))
  • 23
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值