python文件函数_python文件操作及函数学习

文件操作

文件读

f = open('a.txt', encoding='utf-8', mode='r') #只读方式打开文件

data = f.read() #read函数读取所有文件内容,光标移动到末尾

data2 = f.read() #这次都不到内容,因为光标在文件末尾

f.seek(0) #seek函数使光标移动到文件开始位置

data3 = f.read() #读到文件所有内容,因为光标移动到开始位置

f.close() #close关闭文件

f.closed #判断文件是否关闭,关闭返回True,否则返回False

f.encoding #打印编码格式

f.readable() #判断文件是否已r模式打开,是则返回True,否则返回False

f.readline() #一次读取一行

f.readlines() #读取所有行,按照行存成列表

文件写

f = open('a.txt', 'w', encoding='utf-8') #没有则创建,有则清空

print(f.writable()) #writable我文件是否可写,可写返回True, 否则返回False

f.write('11111111\n222') #write写文件

f.wirtelines(['\n5555\n', '6666666666\n', '777777\n']) #写入多行文件

文件修改

read_f = open('b.txt', 'r')

write_f = open('.b.txt.swap', 'w')

for line in read_f.readlines():

if line.startswith('1111'):

line = '2222222\n'

write_f.write(line)

read_f.close()

write_f.close()

os.remove('b.txt') #用到os模块,remove函数删除文件

os.rename('.b.txt.swap', 'b.txt') #rename重命名文件

f = open('a.txt', 'r+') #读写模式打开文件

f = open('a.txt', 'w+') #写读模式打开文件

f = open('a.txt', 'a+') #追加并且可读

为了避免忘记用close关闭文件,可以使用以下方法来操作文件

with open('a.txt','r', encoding='utf-8'):

print(f.read())

补充知识:for循环可以使用带else语句,for循环结束没被打断,会进入else,否则不执行else

for i in range(1,11):

if i == 1:

break

print(i)

else:

print("打印完毕")

i = 0

while i < 5:

print(i)

i += 1

if i == 3:

break

else:

print("打印完毕")

with open('a.txt', 'r', encoding='utf-8') as f: #从文件读到的内容是字符

f.seek(3) #数字3代表光标移动3个字节,默认是文件起始位置

f.seek(2,1) #1代表光标从当前位置移动2个字节

seek()的三种模式:

(1)f.seek(p,0) 移动当文件第p个字节处,绝对位置

(2)f.seek(p,1) 移动到相对于当前位置之后的p个字节

(3)f.seek(p,2) 移动到相对文章尾之后的p个字节

print(f.tell()) #打印光标所在的位置

print(f.read())

python实现tail -f 功能

with open('access.log', 'r') as f:

f.seek(0,2)

while True:

line = f.readline()

if line:

print("新增一行:" + line)

2. 函数

函数实现代码冗余,可读性强,有效统一管理维护成本低.

语法:

def 函数名(参数1,参数2,...):

"""文档注释"""

函数体

return value

自定义函数,必须先定义后引用,否则相当于应用一个没有定义的变量

无参函数

def print_star():

print('*' * 6)

print_star()

有参函数

def my_max(x,y):

if x > y:

return x

else:

return y

print(my_max(1,2))

三元表达式

res = x if x > y else y

空函数

def insert()

"""功能"""

pass

函数分为形参和实参

定义阶段

def foo(x, y):

print(x,y)

调用阶段

foo(1,2)

函数的参数分为5种:位置参数,关键字参数,默认参数,可变长参数(*args, **kwargs),命名关键字参数

位置参数:

def foo(x,y,z): #必须被传值的参数

print(x,y,z)

关键字参数: key=value

def foo(x,y,z):

print(x,y,z)

foo(z=3,y=2,x=1)

关键字实参必须在位置实参后面,不能重复给一个形参传值

默认参数

def register(name, age, sex='male'):

print(name, age, sex)

register(alex, 18)

register(alex, 19, 'female')

register(alex, 20, sex='male')

默认参数必须跟在非默认参数后面,默认参数只在定义时赋值一次,默认参数的值通常定义成不可变类型

可变长参数

def foo(x, y , *args): #会把溢出的按位置定义的实参都接收,以元组的形式赋值给args

print(x, y)

print(args)

foo(1,2,3,4,5)

def foo(x, y, **kwargs): #会把溢出的按位置定义的实参都接收,以字典的形式赋值给kwargs

print(x, y)

print(kwargs)

foo(1, 2, a=3, c=4, b=5)

命名关键字参数

deffoo(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)

以下方式等价

foo(*[1,2,3,4]) <==> foo(1,2,3,4)

foo(**{a:1, b:2}) <==>foo(a=1,b=2)

def wrapper(*args, **kwargs):

print(args)

print(kwargs)

wrapper(1,2,3,4, a=5, b=6)

函数返回值有三种方式

没有return关键字,返回None

有关键字return 返回一个值

有关键字return 返回多个值

deffoo():print('from foo:')return1, [2,3], (4,5), {'a':1,'b':2}

v = foo()

print(v)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值