python第三节函数,文件操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python第三节函数,文件操作相关的知识,希望对你有一定的参考价值。
文件操作
#以读的方式打开文件
# f=open(‘c.txt‘,encoding=‘utf-8‘)
# print(f)
# data = f.read() #以读的方式打开
# print(data)
# print(f.closed) #判断文件是否是关闭状态
# print(f.encoding)#输出文件编码
# print(f.name) #输出文件名称
# print(f.readable())#判断文件是否是读模式
# print(f.readline(),end=‘‘)#一次只读一行,end去掉print换行符
# print(f.readlines()) #读所有行,存成列表形式
# f.close() #关闭文件
#以写的方式打开文件:文件有内容则清空,没有内容以及文件就新建
# f = open(‘d.txt‘,encoding=‘utf-8‘,mode=‘w‘)
# print(f.write(‘121321\n123123123‘)) #往文件里写东西
# print(f.writable()) #判断文件是否是写模式打开
# f.seek(2) #移动光标到第二个位置
# f.writelines([‘wadasa\n‘,‘kkkkkk\n‘]) #以列表格式写入
# f.close() #关闭文件
#文件追加
# f = open(‘c.txt‘,‘a‘,encoding=‘utf-8‘)
# print(f.write(‘123123‘))
# #文件修改
# import os
# read_f = open(‘c.txt‘,‘r‘) #读文件
# write_f =open(‘cd.txt‘,‘w‘) #写文件
# for lien in read_f.readlines(): #for循环输出read_f
# if lien.startswith(‘222‘): #判断c.txt是否以222开头
# lien=‘wwwww\n‘ #成立改成wwww
# write_f.write(lien) #把lien写入新建的文件
# read_f.close()
# write_f.close()
# os.remove(‘c.txt‘) #删除之前的c.txt
# os.rename(‘cd.txt‘,‘c.txt‘) #把cd改名为c
#文件读写方式
# f = open(‘c.txt‘,‘r+‘)#读写
# f = open(‘c.txt‘,‘w+‘)# 先写后读
# f = open(‘c.txt‘,‘a+‘)#追加并读取
#上下文管理with
#使用with打开文件
# with open(‘c.txt‘,‘r‘,encoding=‘utf-8‘) as f ,open(‘d.txt‘) as b_f:
# print(f.read())
# print(b_f.read())
#补充知识
# for i in range(3): #循环1-3
# print(i)
# if i == 1: #判断遇到1终止循环
# break
# else: #循环完成则输出,循环被中断不输出
# print(‘+++>‘)
#不常用的,了解
# with open(‘a.txt‘,‘r‘,encoding=‘utf-8‘) as f:
# print(f.read(4)) #数字指的是读的是字符
#
# with open(‘a.txt‘,‘rb‘) as f:
# print(f.read(1)) #数字指的是读的是字符
# with open(‘a.txt‘,‘r‘,encoding=‘utf-8‘) as f:
# f.seek(3) #seek内指定的数字代表字节
# print(f.tell()) #当前光标所在的位置
# print(f.read())
# with open(‘aa.txt‘,‘r+‘,encoding=‘utf-8‘) as f:
# # f.seek(3) #seek内指定的数字代表字节
# # print(f.read())
#
# f.truncate(1)
# with open(‘b.txt‘,‘rb‘) as f:
# f.read()
# f.seek(3) #默认情况,是以文件起始位置作为开始,往后移动3个bytes
# f.read(1)
# print(f.tell())
# f.seek(2,1) #1 代表以当前光标所在的位置为开始,往后移动2个 bytes
# print(f.tell())
# f.seek(-1,2) #2表以当前光标所在的位置为开始,往后移动2个 bytes
# print(f.tell())
# f.seek(0,2)
# with open(‘c.txt‘,‘r‘,encoding=‘utf-8‘) as f:
# f.seek(0,2)
# print(‘====>‘,f.read())
# tail -f access.log 日志实时更新
# import time
# with open(‘access.log‘,‘r‘,encoding=‘utf-8‘) as f:
# f.seek(0,2) #光标移动到末尾
# while True:
# line = f.readline().strip() #循环输出最后一行,去除空格
# if line:
# print(‘新增日志‘,line)
# time.sleep(0.5)
#神奇的函数,┗|`O′|┛ 嗷~~
# 没有函数会有什么问题?
#
# 1.无组织无结构,代码冗余
# 2.可读性差
# 3.无法统一管理且维护成本高
#自定义函数
#先定义后使用,如果没有定义而直接使用,就相当于引用了一个不存在的变量名
# def foo():
# print(‘from foo‘)
# print(foo)
#函数的使用有两个阶段:定义阶段和使用阶段
#语法
# def 函数名(参数1,参数2,...)
# """文档注释"""
# 函数体(内容)
# return值(返回的值)
#定义函数的三种形式
#一、无参函数:如果函数的功能仅仅只是执行一些操作,就定义为无参函数,无参函数没有返回值
# def print_star():
# print(‘$$$$‘*6)
#二、定义有参函数:函数的功能执行依赖于外部传入的参数,有参函数通常都有返回值
# def my_max(x,y):
# res = x if x>y else y
# return res
#三元表达式
# x =2
# y =4
# # 原:
# if x >y:
# print(x)
# else:
# print(y)
# #三元表达式:
# res=x if x>y else y
#三、空函数
# def auth():
# """认证"""
# pass
# def insert():
# """插入"""
# pass
# def select():
# ""查询"""
# pass
# def delete():
# """删除"""
# pass
# def update():
# """更新"""
# pass
#默认参数
# def asd(name,age,sex=‘male‘): #形参:sex默认参数
# print(name,age,sex)
# v =asd(‘alex‘,40)
# print(v)
#默认参数需要注意的问题
#一、默认参数必须在非默认参数后面
# def register(sex=‘male‘,name,age): #在定义阶段就会报错
# print(name,age,sex)
#二、默认参数在定义阶段就已经赋值了,而且只在定义阶段赋值一次
# a=100000000
# def foo(x,y=a):
# print(x,y)
# a=0
# foo(1)
#默认参数的值通常定义成不可变的类型
#可变长类型参数
# def foo(x,y,*args):#*会把所有超出位置定义的实参全部接收,并以元组的格式赋值给args
# print(x,y)
# print(args)
# foo(‘asd‘,‘a12‘,‘12‘,123)
#输入的数字相加
# def add(*args):
# res =0
# for i in args:
# res+=i
# return res
# print(add(1,2,3,3,4,4,))
# print(add(1,2))
#**会把多出的按关键字定义的实参全部接收
# def foo(x,y,**kwargs):
# print(x,y)
# print(kwargs)
# foo(1,2,a=1,name=‘alex‘,age=30)
# def foo(name,age,**kwargs):
# print(name,age)
# if ‘sex‘ in kwargs:
# print(kwargs[‘sex‘])
# if ‘height‘ in kwargs:
# print(kwargs[‘height‘])
#
# foo(‘egon‘,18,sex=‘male‘,height=‘185‘)
# foo(‘egon‘,18,sex=‘male‘)
#命名关键字参数(了解)
# def foo(name,age,*,sex=‘male‘,height):
# print(name,age)
# print(sex)
# print(height)
# #*后定义的参数为命名关键字参数,这类参数,必须被传值,而且必须以关键字实参的形式去传值
# foo(‘egon‘,17,height=‘185‘)
# def foo(name,age=10,*args,sex=‘male‘,height,**kwargs):
# def foo(name,age=10,*args,sex=‘male‘,height,**kwargs):
# print(name)
# print(age)
# print(args)
# print(sex)
# print(height)
# print(kwargs)
#
# foo(‘alex‘,1,2,3,4,5,sex=‘female‘,height=‘150‘,a=1,b=2,c=3)
# def foo(*args):
# print(args)
# foo(1,2,3,4) # 1,2,3,4 <=====>*(1,2,3,4)
#*[‘A‘,‘B‘,‘C‘,‘D‘],=====>‘A‘,‘B‘,‘C‘,‘D‘
# foo(*[‘A‘,‘B‘,‘C‘,‘D‘]) #foo(‘A‘,‘B‘,‘C‘,‘D‘)
# foo([‘A‘,‘B‘,‘C‘,‘D‘]) #
# def foo(x,y,z):
# print(x,y,z)
#
# # foo(*[1,2,3]) #foo(1,2,3)
# foo(*[1,2]) #foo(1,2)
# def foo(**kwargs):
# print(kwargs)
#
# #x=1,y=2 <====>**{‘y‘: 2, ‘x‘: 1}
# # foo(x=1,y=2)
#
# foo(**{‘y‘: 2, ‘x‘: 1,‘a‘:1}) #foo(a=1,y=2,x=1)
# def foo(x,y,z):
# print(x,y,z)
#
# # foo(**{‘z‘:3,‘x‘:1,‘y‘:2}) #foo(x=1,z=3,y=2)
# foo(**{‘z‘:3,‘x‘:1}) #foo(x=1,z=3)
# def foo(x,y,z):
# print(‘from foo‘,x,y,z)
#
# def wrapper(*args,**kwargs):
# print(args)
# print(kwargs)
#
#
# wrapper(1,2,3,a=1,b=2)
#套用取值,取出位置实参和关键字实参
# def foo(x,y,z):
# print(‘from foo‘,x,y,z)
# def wrapper(*args,**kwargs):
# print(args) #args=(1,2,3)
# print(kwargs) #kwargs={‘a‘:1,‘b‘:2}
# foo(*args,**kwargs) #foo(*(1,2,3),**{‘a‘:1,‘b‘:2}) #foo(1,2,3,b=2,a=1)
# # wrapper(1,2,3,a=1,b=2)
# wrapper(1,z=2,y=3)
#套用函数
# def foo(x,y,z):
# print(‘from foo‘,x,y,z)
# def wrapper(*args,**kwargs):
# # print(args) #args=(1,)
# # print(kwargs) #kwargs={‘y‘:3,‘z‘:2}
# foo(*args,**kwargs) #foo(*(1,),**{‘y‘:3,‘z‘:2}) #foo(1,z=2,y=3)
# # wrapper(1,2,3,a=1,b=2)
# wrapper(1,z=2,y=3)
#函数返回的值
# def foo():
# print(‘from foo‘)
# return None
# res=foo()
# print(res)
‘‘‘
以三种情况返回值都为None:
没有return
return 什么都不写
return None
‘‘‘
# def foo():
# print(‘from foo‘)
# x=1
# return x #指定返回的值
# res=foo()
# print(res)
#return 一个值 函数调用返回的结果就是这个值
# def foo():
# print(‘from foo‘)
# x=1
# return 1,[2,3],(4,5),{}
# res=foo()
# print(res) #打印结果:(1,[2,3],(4,5),{})
# a,b,c,d=foo() #根据位置取返回的值
# print(b)
#return 值1,值2,值3,... 返回结果:(值1,值2,值3,...)
# t=(1,2,3)
# a,_,_=t # 下划线代表什么都不输出
# print(a)
# t=(1,2,3,4,5,6,7,8,9)
# a,*_,c=t #只输出开头和结尾,*_代表中间所有内容为空
# print(a)
# print(c)
#调用函数
# def foo():
# print(‘from foo‘)
# def bar(name):
# print(‘name==>‘,name)
#按照有参和无参可以将函数调用分两种
# foo() #定义时无参,调用时也无参
# bar(‘alex‘) #定义时有参,调用时必须有参数
#按照函数的调用形式和出现的位置,分为三种:
# foo()#调用函数的语句形式
# def my_max(x,y):
# res =x if x>y else y
# return res
# # res=my_max(1,2)*10000000 #调用函数的表达式形式
# # print(res)
# res=my_max(my_max(10,20),30) #把函数调用当中另外一个函数的参数
# print(res)
本文出自 “linux、win运维知识” 博客,请务必保留此出处http://liuming66.blog.51cto.com/10684323/1926712
以上是关于python第三节函数,文件操作的主要内容,如果未能解决你的问题,请参考以下文章
(王道408考研操作系统)第二章进程管理-第三节9:读者写者问题