文件操作练习

该文描述了一系列使用Python进行文件操作的实例,包括创建和写入文本文件,复制文件,修改文件内容,以及统计文件中IP地址的出现频率。此外,还涉及到了文件命名和内容格式的调整,如添加序号、插入和替换特定文本。
摘要由CSDN通过智能技术生成

1.要求

(1)创建一个文件 dldl.txt , 使用代码按以下格式写入内容

f=open('dldl.txt','w',encoding='utf8')
f.writelines('我要和生活再死磕几年\n要么毁灭,要么铸就辉煌\n如果有一天,你发现我在平庸面前低了头\n请向我开炮')
f.close()


(2)读取内容并在每一行的最前面加上序号, 然后写入到另一个文件 dldl2.txt 文件中
效果如下:

file1 = input('请输入你想要复制的文件:')#自定义要复制的文件名字
file = open(file1, 'r', encoding='utf8')#先用r模式打开文件
file1_copy = open('dldl2.txt', 'w', encoding='utf8')#在创建一个新文件,用w模式打开
num = 0#定义一个计数器
for i in file:#for循环遍历file这个文件
    file1_copy.write(str(num + 1) + '.' + i)#用file1_copy中的write方法写入进当前文件中
    num += 1
file.close()#关闭file文件
file1_copy.close()#关闭file_copy


(3)读取内容并在前三行的每一行的最后加上逗号, 最后一行的后面加上句号
效果如下:

with open("dldl2.txt", "r", encoding='utf8') as f:  
    lines = f.readlines()
for i in range(len(lines)):
    if i < 3:
        lines[i] = lines[i].replace('\n', ',\n')
    elif i == len(lines) - 1:
        lines[i] = lines[i] + "."
with open("dldl2.txt", "w", encoding='utf8') as ff:
    ff.writelines(lines)
# 先用r读取文件内容,将文件内容赋值给list1,遍历文件内容的长度,设置限制行数,如果行数在前三行则将换行符替换成',\n',
# 如果在最后一行则添加一个句号,在用w模式打开文件,将内容写进去

 


(4)在第二行插入一行, 内容格式:  ‘xxx永不言败!!!’  (注:其中的xxx改成你自己的名字)
效果如下:

with open('dldl2.txt', 'r+', encoding='utf8') as f:
    lines = f.readlines()
    lines.insert(1, '陈某永不言败\n')  # 在列表第一个位置插入文字
    f.seek(0)  # 指向文件开头
    f.writelines(lines)  # 使用writelines将字符串列表写入文本文件

(5)复制xxx.txt文件, 生成的新文件名字叫做’01.xxx-副本.txt’
例如: 复制 dldl2.txt  ->  01.dldl2-副本.txt

n = input('请输入你想要复制的文件:')  # 自定义复制文件的名字
with open(n, 'r', encoding='utf8') as f:  # 打开文件
    lines = f.readlines()
index = n.rfind('.txt')#获取.txt的下标
new_name = '01.' + n[:index] + '-副本' + n[index:]#进行拼接
f = open(new_name, 'w', encoding='utf8')#创建新的文件,将内容写进去
for i in lines:
    f.write(i)
f.close()


(6)修改当前文件dldl2.txt内容,把所有的  修改成 我 + 你自己的名字(张三)  +  ,

with open('dldl2.txt', 'r', encoding='utf8') as f:
    list1 = f.readlines()
with open('dldl2.txt', 'w', encoding='utf8') as ff:
    for i in list1:
        i = i.replace('我', '我陈某,')
        ff.write(i)



(7)修改当前文件dldl2.txt内容,把所有的 ‘,’ (不包含每行末尾的逗号) 修改成  ~

with open('dldl2.txt', 'r', encoding='utf8') as f:
    list1 = f.readlines()
with open('dldl2.txt', 'w', encoding='utf8') as ff:
    for i in list1:
        i = i.replace(',', '~')
        ff.write(i)

#使用with open ’r’模式打开文件,使用readlines将文本中每一行都作为独立的字符串对象,并将这些对象放入在列表返回,再使用with open ‘w’模式打开文件,for循环遍历列表,使用字符串中的replace将文件中的’,’替换成’~’


(8)重新对当前文件dldl2.txt中的每一行内容最前面设置新的序号替换原本的序号

with open('dldl2.txt', 'r', encoding='utf8') as f:
    list1 = f.readlines()
with open('dldl2.txt', 'w', encoding='utf8') as ff:
    num = 0
    for i in list1:
        index = i.find('.')
        new_str = str(num) + '.' + i[index + 1:]
        num += 1
        ff.write(new_str)

#使用with open ’r’模式打开文件,使用readlines将文本中每一行都作为独立的字符串对象,并将这些对象放入在列表返回,再使用with open ‘w’模式打开文件,设置一个计数器,for循环遍历列表,使用字符串中的find方法获取.的下标,因为字符串不能与数字相加,需要用str方法把num包起来,再进行拼接,赋值给new_str,再用write方法写入dldl2.txt
  1. 有一份‘邀请函.txt’的空白文件,请在同级目录下,编写一段代码,将内容’诚挚邀请您来参加本次宴会‘
f=open('邀请函.txt','w',encoding='utf8')
f.write('诚挚邀请你来参加本次宴会')
  1. 添加问候语和发件人,内容是’best regard 李雷‘,让内容看起来是:

   诚挚邀请您来参加本次宴会

   best regar

   李雷

with open('邀请函.txt', 'a+', encoding='utf8') as f:
    list1 = f.readlines()
    f.write('\nbest regar\n李雷')
  1. 这封邮件需要发送给‘丁一,王美丽,韩梅梅’三位朋友,请在邮件内容开头处添加收件人名字,并且生成相应名字的邮件,邮件内容应该为:

       丁一:

       诚挚邀请您来参加本次宴会

       best regards

       李雷

list1 = ['丁一', '王美丽', '韩梅梅']  # 创建一个列表存储人物名字
with open('邀请函.txt', 'r', encoding='utf8') as ff:
    n = ff.read()#使用read读取文件所有内容
    for i in list1:#for遍历列表
        with open(i + '邀请函.txt', 'w', encoding='utf8') as a:#使用列表中的元素拼接邀请函.Txt
            a.write(i + ':\n' + n)#使用write写入列表元素拼接’:\n’,再拼接’邀请函.Txt’中内容
  1. 京东二面笔试题
  1. 生成一个大文件ips.txt,要求1200行,每行随机为172.25.254.0/24段的ip
import random

f = open('ips.txt', 'w', encoding='utf8')
f.close()
with open('ips.txt', 'w', encoding='utf8') as f:
    list1 = []
    for i in range(255):
        ips = '127.25.254.' + str(i)
        list1.append(ips)
    for count in range(1200):
        index = random.randint(0, 254)
        f.write(list1[index] + '\n')
  1. 读取ips.Txt文件统计这个文件中ip出现频率排前10的ip
dict1 = {}#创建一个字典用于接收文件的ip
with open('ips.txt', 'r', encoding='utf8') as f:
    lines = f.readlines()
    count = 10#定义一个变量,给定初始值为10,意思就是指前10的数据
    for ip in lines:#for循环遍历lines
        if ip in dict1:#如果ip在dict1这个字典中,则这个ip数量就增加一次
            dict1[ip] += 1
        else:
            dict1[ip] = 1#如果不在这个字典中则这个ip则设置为1次
    print(sorted(dict1.items(), key=lambda x: x[1], reverse=True)[:count])

    #对dict1字典根据value值进行排序,逆序排序,并选取前count个

12.实现文件操作功能:(10分)
需求:
(1)创建content.txt文件, 写入内容:

 f=open('content.txt','w',encoding='utf8')
f.writelines('你总是期待着,期待着有一天自己会突然变好.你总\n是在等,等着有一天,自己会突然改变.恰恰”期带”和”\n等”才是把一个人变得越来越废的关键.')
f.close()

(2)用户输入需要复制的文件名, 复制后的文件名格式: 原文件名-副本.txt
例如: 用户输入content.txt  ,复制之后的文件名: content-副本.txt

n = input('请输入你想要复制的文件:')
with open(n, 'r', encoding='utf8') as f:
    lines = f.readlines()
index = n.rfind('.txt')
new_name = '01.' + n[:index] + '-副本' + n[index:]
f = open(new_name, 'w', encoding='utf8')
for i in lines:
    f.write(i)
f.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值