python内置函数打开创建文件_python内置函数,lambda表达式,文件读写

打开文件的模式有:

• r ,只读模式【默认】

• w,只写模式【不可读;不存在则创建;存在则清空内容;】

• x, 只写模式【不可读;不存在则创建,存在则报错】

• a, 追加模式【可读; 不存在则创建;存在则只追加内容;】"+"表示可以同时读写某个文件

• r+, 读写【可读,可写】

• w+,写读【可读,可写】

• x+,写读【可读,可写】

• a+, 写读【不可读,可写】"b"表示以字节的方式操作

• rb 或 r+b

• wb 或 w+b

• xb 或 w+b

• ab 或 a+b

注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型

data=open('yesterday.py',encoding='utf-8').read()#打开文件

f=open('yesterday.py','r',encoding='utf-8')#文件句柄,文件内处对象,对文件对象进行操作,读

data=f.read()

data2=f.read()print(data)print('--data2--%s--'%data2)print(data)

f=open('yesterday2.py','w',encoding='utf-8')#文件句柄,文件内处对象,对文件对象进行操作,写(不存在则创建, 存在则覆盖原文件)

f.write('我爱北京\n')

f.write('我爱北京1')

f= open('nihao.log','x')

f.write('123')#只写模式[不可读,不存在则创建,存在则报错]

f.close()

f=open('yesterday2.py','a',encoding='utf-8')#文件句柄,文件内处对象,对文件对象进行操作,追加(不可读, 不存在创建,存在只追加内容,)a=append追加的意思

f.write('你好。。。\n')

f.write('你好2')

f.close()#关闭文件

f=open('yesterday.py','r',encoding='utf-8')for i in range(3):#读取前三行

print(f.readline())#读取文本文件中的一行,

f= open('nihao.log','r',encoding='utf-8')#f.read()#全部读出

for line inf:print(line)#循环一行行读出,如果文件很大可以使用for循环line一行行读直到结尾(最优方法),若使用readline不知道文件结尾

f=open('yesterday.py','r',encoding='utf-8')for line inf.readlines():print (line.strip())#循环打印

效率很慢的循环方法

f=open('yesterday.py','r',encoding='utf-8')for index,line in enumerate(f.readlines()):#readlines当做一个列表第一行第二行连续读

if index ==9:#循环到第10行不打印,

print('--分割线--')continue

print(line.strip())#高效率循环方法

f=open('yesterday.py','r',encoding='utf-8')

count= 0#计数器

for line in f:#这种内存里面只保留1行

if count ==9:print ('--分割线--')#count += 1#每次循环+=1

continue

print(line.strip())

count+=1f=open('yesterday.py','r',encoding='utf-8')print(f.tell())#打印打开的文件指针在哪一行,按字符计数

print(f.readline())print(f.readline())print(f.readline())print(f.tell())

f.seek(5)#返回当前数字位置,是r+,w+,a+的共有特性,读取

print(f.readline())print(f.encoding)#打印字符编码

print(f.fileno())#返回一个编号,操作系统打开python文件的一个接口编号,

print(f.name)#打印文件名称

print(f.isatty())#判断是不是终端设备,如打印机

print(f.seekable())#判断是否能移动光标

print(f.readable())#判断文件是否可读

print(f.writable())#判断文件是否可写

print(f.closed())#判断文件是否关闭

f=open('yesterday.py','a',encoding='utf-8')print(f.truncate(10))#不指定从零截断,指定从具体位置,依赖于指针在前还是在后

f= open('yesterday.py', 'r+', encoding='utf-8')#r+是以读写模式打开#从0开始往后读,写,追加.指针会调到最后,如果主动加seek会从当前之针向后写.

f = open('nihao.log','r+',encoding='utf-8')print(f.tell())#读取指针,指针为0,起始位置,

date = f.read(2)print(date)print(f.tell())

f.write('zc')print(f.tell())

f.close()

f= open('yesterday.py', 'w+', encoding='utf-8')#w+是以写读模式打开,先创建文件再往里面写

f = open('yesterday.py', 'a+', encoding='utf-8')#a+是以追加读写模式,打开时指针在最后

print(f.readline())print(f.tell())

f.write('-----')print(f.readline())

f= open('yesterday.py', 'rb',)#以二进制读取文件

print(f.readline())

f= open('yesterday.py', 'wb',)#以二进制写文件

f.write('hell word \n'.encode())#必须加encode转换

f.close()

f= open('yesterday.py', 'ab',)#追加二进制文件

f.write('hell word \n'.encode())

f.close()

with自动关闭文件#with可以自动关闭文件,

with open('yesterday.py','r',encoding='utf-8') as f:#as f 相当于将这段话赋值给f ,等同于f= open('yesterday.py','r',encoding='utf-8')

print(f.readline())

with open('yesterday.py','r',encoding='utf-8') as f,\

open('yesterday2.py', 'r', encoding='utf-8') as f2:#同时打开多个文件方法

for line inf :print(line)

with open('nihao.log','r',encoding='utf-8') as obj1,open('新文件','w',encoding='utf-8') as obj2:for line in obj1:#可以将obj1读一行写入obj2一行,最优的拷贝方式

obj2.write(line)

文件中内容修改

f=open('yesterday2.py','r',encoding='utf-8')

f_new=open('yesterday2.bak','w',encoding='utf-8')for line inf:if '肆意的快乐'inline:

line=line.replace('肆意的快乐','不快乐')#如果找到内容就替换

f_new.write(line)

f.close()

f_new.close()

通过外部脚本传参数

f=open('yesterday2.py','r',encoding='utf-8')

f_new=open('yesterday2.bak','w',encoding='utf-8')#通过外部文件传参数

importsys

find_str=sys.srgv[1]#先找到文件

replace_str=sys.argv[2]for line inf:if find_str inline:

line=line.replace(find_str,replace_str)#如果找到内容就替换

f_new.write(line)

f.close()

f_new.close()

进度条操作importsys,timefor i in range(31):

sys.stdout.write('\r')#每次清空原行,如不清空原行会将所有都列出来

sys.stdout.write('%s%% |%s' % (int(i/30*100), int(i/30*100)* '*'))#sys模块下标准输出

sys.stdout.flush()#缓冲刷新

time.sleep(0.1)#time模块下的0.1秒钟执行

f1= open('nihao.log','a+',encoding='utf-8')#r+默认指针在最前,a+默认指针在最后

f1.write('ok')

f1.flush()#主动将内存中的文件刷新到硬盘中

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值