python复习28~29文件

学习内容:文件

打开模式执行操作
r以只读模式打开文件
w以写入模式打开文件,会覆盖已存在的文件
x如果文件已存在,使用此模式打开会引发异常
a以写入模式打开,如果文件存在,则在末尾追加写入
b以二进制模式打开
t以文本模式打开
+可读写模式
U支持通用换行符

其中用open()函数打开一个文件时,默认‘rt’<=只读和文本模式。

文件对象的方法执行操作
f.close()关闭文件
f.read(size=-1)从文件中读取size个字符,当未给定size或给定负值时,读取文件指针开始的剩余的所有字符,作为字符串返回
f.readline()从文件中读取一整行字符串
f.write(str)将字符串写入文件
f.writelines(seq)向文件写入字符串序列seq,seq是一个返回字符串的可迭代对象
f.seek(offet,from)在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
f.tell()返回文件指针在文件中的位置

将文件(使用说明.txt)保存为(使用说明.mp3)

>>> f1=open('D:\\使用说明.txt')
>>> f2=open('D:\\使用说明.mp3','x')
>>> for each_line in f1:
	f2.write(each_line)

将(使用说明.mp3打印到屏幕上)

>>> for each_line in f2:
	print(each_line,end='')

	
Q00123电视直播(http://www.q00123.com)q00123电视直播是一款非常优秀的电视直播软件电脑版,该软件包含了目前所有的电视频道,用户能够直接选择自己所需要观看的频道进行直播,具有电视台多、播放流畅、视频清晰等特色,致力于为广大用户带来最方便、便捷的直播体验。
。。。。。。

末尾追加写入文件:

>>> f=open('D:\\使用说明.txt','a')
>>> print('文件名为:',f.name)
文件名为: D:\使用说明.txt
>>> seq=['carrot1','carrot2']
>>> f.writelines(seq)
>>> f.close()
>>> f=open('D:\\使用说明.txt')
>>> for each in f:
	print(each,end='')

	
Q00123电视直播(http://www.q00123.com)q00123电视直播是一款非常优秀的电视直播软件电脑版,该软件包含了目前所有的电视频道,用户能够直接选择自己所需要观看的频道进行直播,具有电视台多、播放流畅、视频清晰等特色,致力于为广大用户带来最方便、便捷的直播体验。

软件功能:
1:可以在线电视直播,电视台有上万个,国内,国外,港台等全球世界各地的电视台。
2:可以在线电影直播,上百个电影院的直播台,每天24小时不间断的直播最新最好看的电影。
3:可以在线音乐直播,几十个音乐直播台24小时不断直播最好听最新的音乐。
4:可以在线收音广播,上万个全球广播电台,可以随意点播。
5:还有MV直播,搞笑节目直播,游戏直播,美女直播等等多样类型节目直播。
软件特点:
1:直播节目多。
2:节目源稳定。
3:软件操作方便
4:软件容量小。
5: 速度快。
6:广告少。
carrot1carrot2

下面练习题:源自小甲鱼,如涉及版权问题,贵小甲鱼官方所有。
一:编写一个程序,接受用户的输入并保存为新文件,程序实现如下:
在这里插入图片描述

def fwrite(filename):
    print('请输入想要保存的文字(退出请按w/W):')
    f=open(filename,'w')
    while True:
        a=input()
        if a!='w'and a!='W':
            f.write('%s\n'%a)
        else:
            break
    f.close()

filename=input('请输入文件名')
fwrite(filename)

二:编写一个程序,比较用户输入的两个文件,如果不同,显示出所有不同出的行号与第一个不同字符的位置。实现如下:
在这里插入图片描述

def file_compare(file1,file2):
    f1=open(file1)
    f2=open(file2)
    count=0
    differ=[]
    for each1 in f1:
        each2=f2.readline()
        count+=1
        if each1!=each2:
            differ.append(count)
    f1.close()
    f2.close()
    return differ

file1=input('请输入需要比较的第一个文件名:')
file2=input('请输入需要比较的第二个文件名:')
differ=file_compare(file1,file2)

if len(differ)==0:
    print('这两个文件完全一样')
else:
    print('这两个文件有【%d】处不同:'%len(differ))
    for each in differ:
        print('第%d行不一样'%each)

三:编写程序,用户可以随意输入需要显示的行数,输入13:21打印第13行到21行,程序实现如下:
在这里插入图片描述

def file_print(file,num):
    (start,end)=num.split(':')
    if start =='':
        start = 1
    else:
        start=int(start)
    if end =='':
        end = -1
    else:
        end = int(end)

    f=open(file)
    if start==1:
        if end==-1:
            print('文件%s从开头到结束的内容如下:'%file)
        else:
            print('文件%s从开头到%d行的内容如下:'%(file,end))
    else:
        if end ==1:
            print('文件%s从%d行到结束的内容如下:'%(file,start))
        else:
            print('文件%s从%d行到%d行的内容如下:'%(file,start,end))

    for i in range(start-1):
        f.readline()#这里指针走到了start-1行,不一定是从0开始了
    n = end-start+1
    if n<0:
        print(f.read())#这里表示end=-1,从start-1开始,打印至最后一行
    else:
        for i in range(n):
            print(f.readline())
        f.close()

file_name=input('请输入要打开的文件')
num=input('请输入要显示的行数【格式如13:21】:')
while num== '':
    num=input('输入有误,请重新输入:')
file_print(file_name,num)

四:编写程序,实现全部替换功能,程序实现如下:

在这里插入图片描述

def f_replace(file_name,ole_word,new_word):
    f_read=open(file_name)
    count=0
    content=[]

    for each_line in f_read:
        if old_word in each_line:
            count+=1
            each_line = each_line.replace(old_word,new_word)
        content.append(each_line)

    decide = input('\n文件%s中共有%s个【%s】\n您确定要吧也是有的【%s】替换为【%s】吗?\n【YES/NO】:'%(file_name,count,old_word,old_word,new_word))
    if decide in['YES','Yes','yes']:
        f_write = open(file_name,'w')
        f_write.writelines(content)
        f_write.close()

    f_read.close()

file_name=input('请输入文件名:')
old_word=input('请输入需要替换的单词或字符:')
new_word=input('请输入新的单纯或字符')
f_replace(file_name,old_word,new_word)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值