Python文件操作及函数
一、Python的文件操作:
1.1 文件操作的结构:
1、文件名(或者是文件的绝对路径)
2、操作权限(r读、w写、b以二进制的方式打开、a追加写入)
1.2 文件对象f.常用的操作方法
read() 把文件的所有内容都读取出来,返回一个字符串
write(data) 把字符串data写入到文件中,只接受字符串参数 data=”test”
readline 每次读取文件一行数据,返回每行的字符串数据 readlines 读取文件内容,返回一个list,每一行是一个元素
name() 文件名字
fileno() 文件描述符
close() 关闭文件
encoding() 文件编码
closed() 判断文件是否关闭(返回bool值:True或False)
seek(offset,whence) offset偏移量(正数向后偏移,负数向前偏移) whence(0开头 1现在位置 2结尾)
tell() 返回文件光标位置
truncate(size) 有写权限可以使用,清空文件,size表示清空到什么位置,0位清空所有,例如:truncate(1) 保留1位
1.3 实际操作列举:
读取文件内容:
读取文件必须是存在的
f = open("1.txt","r")
print(f.read())
f.close()
写入文件内容(没有中文字符时,只有英文字符):
写入文件不存在则会自动创建
f = open("1.txt","w")
print(f.write("xxxxxxxxxxxx\n yyyyyyyyyyyyyyyy\n zzzzzzzzzzzzzz"))
f.close()
写入文件内容(存在中文字符):
存在中文字符时,需要在后面加上encoding=”utf-8” 指定编码类型,否则会显示为乱码。
f = open("3.txt","a",encoding="utf-8")
print(f.write("\n我打飞机啊时空裂缝就奥斯卡砥砺奋进上课了就"))
f.close()
为了日后维护代码修改方便,可以使用全局申明:
注意:全局申明要使用的所有字母都必须大写
NCODEING = "utf-8"
f = open("3.txt","w",encoding=ENCODEING)
f.write("\n发送到发上分大神")
f.close()
追加写入文件内容:
f = open("2.txt","a")
print(f.write("\n6666666666"))
f.close()
readline和readlines用法的区别:
readline 举例:
f = open("3.txt","r",encoding=ENCODEING)
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
f.close()
readlines 举例:
f = open("3.txt","r",encoding=ENCODEING)
print(f.readlines())
f.close()
从上面的结果输出结果对比,可以看出:
readline是每次读取文件一行数据,返回每行的字符串数据;
readlines是读取文件所有内容,返回一个list,每一行是一个元素
我们也可以使用for循环使用readlines打印每行字符串数据,enumerate打印行号;实现如readline每次只读一行数据的效果:
f = open("3.txt","r",encoding=ENCODEING)
for i,line in enumerate(f.readlines()):
print("第{0}行内容: {1}".format(i,line))
f.close()
1.4 with as的用法:
在上面的读写操作后,我们每次都需要使用.close()来关闭文件显得特别麻烦。
而我们可以使用with as实现同样的效果,如下面2个举例编写:
with open("1.txt","r") as f:
print(f.read())
import codecs
with codecs.open("3.txt","r",encoding="utf-8") as f:
print(f.read())
二、函数:
1.1 函数的介绍:
函数就是一种封装的思想,把细小的功能或者可以缩小的功能封装成一种函数。
函数定义(申明): 以关键字 def开头,函数名,参数: 回车缩进
def function(arg1,arg2,...):
pass
函数的调用:
函数名直接插入参数
function(1,2,3) arg1 ,arg2 形参(list、dict等的参数) 1,2,3 实参(实际值的参数)
1.2 函数中*args **kwargs用法:
def fun(*args **kwargs):
pass
举例如下:
fun(1,2,3,4,5,a=1,b=2)
a = 1
args = 2,3,4,5 list 一一对应
kwargs = {"a":1,"b":2} dict 一一对应
解析:
a 代表实际数
*args 代表list
**kwargs 代表dict
1.3 匿名函数:
匿名函数的格式:
lambda x,y: x+y
举例,两数相加:
add = lambda x,y: x+y
一般不建议适用匿名函数,建议使用如下,意思与匿名函数一样:
def add(x,y):
return x+y