zoukankan      html  css  js  c++  java
  • 文件读写和修改

    1.打开文件的三种模式 

    1)读模式(r:只能读不能写,打开不存在文件会报错 )

    f=open(r'C:UsersAdministratorDesktop课前须知.txt',encoding='utf-8')
    result=f.read()
    print(result)
    f.close()

    2)写模式 (w:只能写不能读 。会把原有内容覆盖掉,文件不存在会创建)

    f=open(r'C:UsersAdministratorDesktop课前须知.txt','w',encoding='utf-8')
    f.write('abc')
    f.close()

    3)追加模式(a: 只能写不能读 。不会清空原来内容,是在内容后面追加内容,文件不存在会创建)

    f=open(r'C:UsersAdministratorDesktop课前须知.txt','a',encoding='utf-8')
    f.write('abc')
    f.close()

    2.新三种模式

    r+  只要和r有关,打开不存在文件都会报错 。

    w+ 只有和w有关,都会清空原来的文件。

    a+ 文件指针 seek()解决

    # f = open(r'test.txt','a+',encoding='utf-8')
    # f.seek(0)
    #r就是原字符
    # print(f.read())#读取文件里面所有的内容
    # print('8====',f.readline())#读取一行的内容
    # print('readlines',f.readlines())# f.read()
    # f.seek(0)#移动文件指针
    # print(f.read())
    # f.close()
    
    # f = open('test.txt','r+',encoding='utf-8')
    # f.seek(0)
    # f.write('111')
    # f.close()
    
    #文件指针
    
    l = ['a
    ','b
    ','c
    ','e
    ','g
    ']
    f = open('nhy.txt','w',encoding='utf-8')
    # for i in l:
    #     f.write(i+'
    ')
    
    f.writelines(l)
    #传一个list的话,他会自动帮你循环,把list里面每一个
    #元素写到文件里面
    f.close()
    # f.write('sd')

    3.练习

    #监控服务器日志,找出每分钟访问超过100次的ip地址。
    
    #1、每分钟读取一次文件,获取文件内容
    #2、从文件内容里面找到ip地址
    #3、判断每个ip出现的次数,如果超过100次,就找出来
    import time
    point = 0
    while  True:
        ips = {}#存放所有的ip地址
        f = open('access.log',encoding='utf-8')
        f.seek(point)
        for line in f:
            if line.strip()!='':#判断是否不为空行
                ip = line.split()[0]
                if ip not in ips:
                    ips.setdefault(ip,1)
                else:
                    ips[ip]+=1
                    # ips[ip]=ips[ip] + 1
        point = f.tell()#记录文件指针的位置
        for k,v in ips.items():
            if v>=100:
                print('有问题的ip地址是%s'%k)
        f.close()
        time.sleep(60)
    

      4.文件修改 

    #1、简单直接粗暴的方式
    
    #1、读取内容
    #2、替换
    #3、清除原来文件的内容
    #4、把新的内容写进去
    
    
    # f = open('nhy.txt','a+',encoding='utf-8')
    # f.seek(0)
    # result = f.read()
    # content = result.replace('xiaolan','dalan')#替换
    # f.seek(0)
    # f.truncate()#清空文件内容
    # f.write(content)
    # f.close()
    
    # f2 = open('nhy.txt','w')
    # f2.write(content)
    
    #第二种
    #1、逐行处理
        #1、打开a文件,在打开一个b文件
        #2、从a文件读一行,修改,修改之后写到b文件里
        #3、删除a文件,把b文件的名字改成a文件
    f = open('nhy.txt',encoding='utf-8')
    f2 = open('nhy2.txt','w',encoding='utf-8')
    
    for line in f:
        result = line.upper()
        f2.write(result)
    f.close()
    f2.close()
    
    import os
    os.remove('nhy.txt')
    os.rename('nhy2.txt','nhy.txt')
    

    5.不需要写关闭的文件打开方式

    with open('test.txt') as f,open('nhy.txt') as f2:
        f.read()
        #这种写法不需要关闭,不需要f.close()
  • 相关阅读:
    3G来临,程序员你准备好了吗?
    如何从开发人员走向架构师
    中国营销六大怪
    什么是3G
    未来五年中国高端软件人才缺口20万
    项目需求分析的20条法则
    让好的销售习惯提升你的业绩
    有关精通时间管理的最佳理念
    李嘉诚:让员工忠诚的简单办法
    手机软件开发人才严重短缺
  • 原文地址:https://www.cnblogs.com/Dorami/p/10932169.html
Copyright © 2011-2022 走看看