python练习题——文件的打开、读取、复写



'''打开文件,作为一个对象进行操作'''
'''仅度,仅写,添加三种模式'''

a = open("小重山","r")#打开小重山这个文件,以一种只读的模式
f = a.read(100)#操作一个对象。
print(f)
a.close()#关闭一个操作

a =open("小重山","w")
f = a.write("魏富强是一个大傻逼\n")
f = a.write("千古江山,英雄无觅,孙仲谋处。\n")
f = a.write('''舞榭歌台,风流总被、雨打风吹去。
斜阳草树,寻常巷陌,
人道寄奴曾住。
想当年,金戈铁马,气吞万里如虎。

元嘉草草,封狼居胥,
赢得仓皇北顾。
四十三年,望中犹记,烽火扬州路。
可堪回首,佛狸祠下,
一片神鸦社鼓。
凭谁问:廉颇老矣,尚能饭否?\n''')
a.close()
a = open("小重山","a")
f = a.write("魏富强真是一个大傻比")
f = a.write("\nwhat's your name ?")
a.close()


print('------------------------------------------------------------------------------')
a = open("小重山",'r')
f = a.readlines()
for i in f:
    n = 1
    if n == 6 :
        print("laxi")
        a = open("小重山","a")
        f = a.write("魏富强是一个大傻逼,I like it.")
        print(f)
        a.close()
    else:
        print(i.strip())  # 这里隐藏了一个strip的方法,可以删除字符串对象一行末尾的标识符。这里还需要申明的一点是print在打印过后自动会产生一个换行
    n += 1
print("--------------------------------------")
a = open("小重山",'r')
f = a.readlines()
num  = 0 #要使用迭代器,其初始值一定要放在循环体的外部。我就是刚刚放在了内部,不知道为什么
for i in f:
    num += 1
    if num == 6:
        i=''.join([i.strip(),'i like it'])#以后字符串的链接使用函数join
    print(i.strip())#以后想要删除换行符,可以使用strip函数。使用print函数会直接自动添加一个换行符

#    print(num)
a.close()#在使用一个方法后记得要关闭


print('------------------------------------------------------------------------------')
a = open("小重山",'r')
f = a.readlines()
for i in f:
    n = 1
    if n == 6 :
        print("laxi")
        a = open("小重山","a")
        f = a.write("魏富强是一个大傻逼,I like it.")
        print(f)
        a.close()
    else:
        print(i.strip())  # 这里隐藏了一个strip的方法,可以删除字符串对象一行末尾的标识符。这里还需要申明的一点是print在打印过后自动会产生一个换行
    n += 1
print("--------------------------------------")
a = open("小重山",'r')
f = a.readlines()
num  = 0 #要使用迭代器,其初始值一定要放在循环体的外部。我就是刚刚放在了内部,不知道为什么
for i in f:
    num += 1
    if num == 6:
        i=''.join([i.strip(),'i like it'])#以后字符串的链接使用函数join
    print(i.strip())#以后想要删除换行符,可以使用strip函数。使用print函数会直接自动添加一个换行符

#    print(num)
a.close()#在使用一个方法后记得要关闭

a = open("小重山","r")
num = 0
for i in a :#这里是把a做成了一个迭代器
    num+=1
    if num == 6:
        i ="".join([i.strip(),"i like learning python"])
    print(i.strip()) #这可以完美的解决文本太大,内存不足以承接文本等对象的内容
a.close()

print("---------------------------")
'''这里讲的是tell的用法'''
a = open("小重山",'r')
print(a.tell())#显示现在指针的位置。如果是中文的话,一个字节是3个位置,utf8格式的;如果是英文的话,一个字母占1个位置
a.read(2)
print(a.tell())
a.seek(1)
print(a.tell())

print('----=======================================-------')
'''r+,w+,a+模式'''
a = open("小重山",'r+',encoding='utf8')#这里的r+模式是该怎么读还是怎么读,但如果想要写文件,还需要将文件的内容写在最末尾
#w+ 是先覆盖原文
print(a.readline())
a.write("我爱大美女")
print(a.tell())#这里是为什么显示前两段读文件读内容呢?
#我知道了。我现在是将开启了读+的模式。读—+的模式是一种先读,正常的读,然后想写文档,文档此时呢就是在最后开始写。写上了他的指针就在最后了
#然后再去readline或者是readlines都是正常可以读的。但是呢必须从现在的位置,也就是从最后的位置开始读。你可以试一下用seek找到前面的位置,然后再去读。应该是没有问题的
#print(a.readline(print(a.tell()-15)))
print(a.seek(0))
print(a.readlines())#这里的readlines的用法是不可以一行一行的显示的。readlines没有。strip的方法。所以他的显示是一个列表
a.seek(700)
#print((a.seek(0)).read())#说明这样的方法是不行的
#print(a.readline())


'''w+是一个格式。可以覆盖原来的文档,可以用来读。但是读也是在。tell后面。如果想看,得调整光标seek
a+是'''

a.close()
print("******************************************"*3)

a = open("小重山",'r')
b = open("小重山副本",'w+')

f = a.readlines()
num = 0
for i in f:
    num += 1
    if num == 6:
        i  = "".join([i.strip(),'i like u\n'])
    print(i.strip())
    print(num)
    b.write(i)#当时这里不知道为什么要加上。strip
    # print("")
    # g = "".join([b.write(i.strip()),"\n"])
    # print('')

'''使用with代码块,可以避免使用f.close这个语句来关闭文件
这样可以有效的完善代码的要求,并且显得高大上一些'''

with open("小重山","r") as s:
    print(s.read())
    print(s.readlines())
    print("****")

'''使用with方法管理多个对象'''
with open("小重山","r") as s,open("小重山副本",'w') as f:
    for i in s.readlines():
        f.write(i)


截止到这里,文件的操作和管理已经完全结束了。就这点内容

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值