首页 > 代码库 > python第三节函数,文件操作

python第三节函数,文件操作

文件操作
#以读的方式打开文件
# f=open(‘c.txt‘,encoding=‘utf-8‘)
# print(f)
# data = http://www.mamicode.com/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第三节函数,文件操作