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()
  • 相关阅读:
    215. Kth Largest Element in an Array
    214. Shortest Palindrome
    213. House Robber II
    212. Word Search II
    210 Course ScheduleII
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    206. Reverse Linked List
    sql 开发经验
  • 原文地址:https://www.cnblogs.com/Dorami/p/10932169.html
Copyright © 2011-2022 走看看