1. 程式人生 > >python第三節函數,文件操作

python第三節函數,文件操作

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第三節函數,文件操作