Python-字符串格式化与文件 *** 作

Python-字符串格式化与文件 *** 作,第1张

概述一.字符串格式化字符串的格式化有两种方式:百分号方式(较老)、format方式(先进)1、百分号方式%s万能的可以接收任意类型msg="iam%s,myhobbyis%s"%('lif','alex')print(msg)%d只接收int数字类型msg="iam%s,ageis%d"%('alex',18)msg="iam%(name)s, 一.字符串格式化

字符串的格式化有两种方式:百分号方式(较老)、format方式(先进)
1、百分号方式
%s万能的可以接收任意类型
msg = "i am %s, my hobby is %s" %('lif','alex')
print(msg)
%d只接收int数字类型
msg = "i am %s, age is %d" %('alex',18)
msg = "i am %(name)s, age is %(old)d"%({'name':'alex','old':18})  #传字典
print(msg)
%f只接收float数字类型,%.2f表示保留两位小数
tpl = 'percent %.2f'%99.6745
tpl = 'percent %(pp).2f'%({'pp':99.4567})                          #传字典
print(tpl)

2、format方式,常用方式
位置参数传入,必须一一对应({}什么也不填,或者填传入位置)
msg  = "i am {}, age is {}, my hobby is {}".format('alex',18,'footbal')
msg  = "i am {0}, age is {1}, my hobby is {2}".format('alex',18,'footbal')
msg  = "i am {0}, age is {1}, my hobby is {2}".format(*['alex',18,'footbal'])
print(msg)
赋值形式或**字典的形式传入
tpl = "i am {name}, age is {age}, my hobby is {hobby}"
msg = tpl.format(name="alex",age=18,hobby="footbal")
msg = tpl.format(**{'name':'alex','age':18,'hobby':'ootbal'})
print(msg)
tpl = "i am {0[0]}, age is {0[1]}, my hobby is {0[2]}"
msg  = tpl.format(['alex',18,'footbal'])
print(msg)
设定参数要求
msg = "i am {:s}, age {:d}, money {:.2f}".format('alex',18,97.8654)
print(msg)
msg = "i am {name:s}, age {age:d}".format(name='alex',age=18)
print(msg)

二.文件 *** 作

三步骤:打开文件,得到文件句柄并赋值给一个变量;通过句柄对文件 *** 作;关闭文件
open()函数打开文件时,如果不指定打开方式,会默认使用 *** 作系统的, *** 作系统的是GBK,
因此用什么编码保存的就用什么编码打开。

1、文件模式有(默认文本模式):
r,只读模式(默认模式,文件必须存在,不存在则抛出异常)
w,只写模式(不可读,不存在则创建,存在则清空内容,本质是覆盖)
a,追加模式(不可读,不存在则创建,存在则追加内容,从光标最后位置往后写)
f = open('a.txt','w',enCoding='utf8')      
f.write('5555')                   #write必须是字符串,并且只能有一个参数
f.writelines(['5555\n','6666\n']) #writelines 参数是列表且里边必须是字符串
f.close()

f = open('a.txt','r',enCoding='utf8')
print(f.read())
f.close()

with open('a.txt','a',enCoding='utf8') as f:
    f.write('aaaaaa\n')                

with open('a.txt','r',enCoding='utf8') as f,\
        open('a.txt','w',enCoding='utf8'):

2、非文本文模式(b模式)
b模式:b表示以字节方式 *** 作(读,写和追加)
注:以b方式打开时,不能指定编码,读取的内容是字节类型,写入时也需提供字节类型。
rb,只读模式(默认模式,文件必须存在,不存在则抛出异常)
wb,只写模式(不可读,不存在则创建,存在则清空内容)
ab,追加模式(不可读,不存在则创建,存在则追加内容)
with open('a.txt','r',enCoding='utf8') as f:
    data = f.read()
    print(data)

f = open('b.txt','wb')
 f.write('5555\n'.encode('utf-8')])                                         
f.writelines([bytes('6666\n',enCoding='utf-8'),'5555\n'.encode('utf-8')])    
f.close()

字符串 ---encode---->bytes
bytes-----decode---->字符串

3、+同时读写某个文件
r+,读写,默认从开头开始,本质是覆盖
w+,写读,默认从开头开始,本质是覆盖
a+,写读,从光标最后位置往后写
f = open('a.txt','r+',enCoding='utf8')
f.write('asdfg\n')                       
f.close()

f = open('a.txt','w+',enCoding='utf8')
f.write('asdfg\n')                        
f.close()

f = open('a.txt','a+',enCoding='utf8')
f.write('66666asdfg\n')                  
f.close()

4、文件 *** 作的其他方式
with open('a.txt','r',enCoding='utf8',) as f:
    data = f.enCoding                            #打开源文件的编码方式     
    data = f.flush()                            #刷新文件
    data = f.tell()                                #获取当前光标所在的
    f.seek(3)                                    #移动光标的位置,以字符为单位
    data = f.read()
    print(data)

seek(10,0)    0:相对初始位置,默认从开头位置
seek(10,1)    1:相对上次光标所在的位置
seek(-10,2)    2:相对末尾,从末尾倒着移动光标,因此seek中是-10,
虽然倒着移动光标,但read()读取时仍然从光标位置往后读
当seek中是1和2时,必须是带b即b模式,末尾不用带enCoding=''。
f.truncate(10) #从开头开始算,将文件只保留从0-10个字节的内容,
文件必须以写方式打开,但是w和w+除外(清空)

# 循环文件的推进方式
f = open('b.txt','rb')
for i in f:
    print(i)
找出文件的最后一行(节省内存):
f = open('日志文件','rb')
offs = -10
while True:
    f.seek(offs,2)
    data = f.readlines()
    if len(data)>1:
        print(data[-1].decode('utf8'))
        break
    offs*=2
f.close()
 

总结

以上是内存溢出为你收集整理的Python-字符串格式化与文件 *** 作全部内容,希望文章能够帮你解决Python-字符串格式化与文件 *** 作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1184586.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存