• python文件操作


    文件操作流程

      1.打开文件,得到文件句柄并赋值给一个变量,

      2.通过句柄对文件进行操作,

      3.关闭文件。

      例如现有一个文件内容如下:

      昨夜寒蛩不住鸣。

      惊回千里梦,已三更。
      起来独自绕阶行。
      人悄悄,帘外月胧明。
      白首为功名,旧山松竹老,阻归程。
      欲将心事付瑶琴。
      知音少,弦断有谁听。
         操作此文件:
    f = open('小重山') #打开文件
    data=f.read()#获取文件内容
    f.close() #关闭文件

      注意:文件是utf8保存的,打开文件时open函数是通过操作系统打开的文件,而win操作系统默认的是gbk编码,所以直接打开会乱码,需要f=open('hello',encoding='utf8'),hello文件如果是gbk保存的,则直接打开即可。

      文件打开模式

      文件具体操作

      f.read()读取文件内容,读的时候从光标的位置开始读,

      f.read(5)读取5个字符,在2.x版本里读5个字节。

      f.readline读出一行内容包括换行符。

      f.readlines读出所有行放到一个列表中,每一行包括换行符。

      例子:打印所有行,另外第3行后面加上:'end 3',

    count=0
    for line in f:#这是迭代方法,每次只读一行,节省内存
        if count==3:
            line=''.join([line.strip(),'end 3'])
        print(line.strip())
        count+=1

      f.flush(写操作并不会立即写到磁盘,而是存到缓存区最后才是存)

      f.write(),f.flush(),内容会立即写到磁盘上。

      f.seek()调整光标的位置,按字节计算的。可以包含两个参数,第二个参数可以是0,1,2,0代表从最开始计算移动,1表示从当前位置开始移动,2表示从最后开始移动。

      例如:f.seek(-3,2)就是从最后开始计算光标往前移3个字节。模式二必须在bytes的模式才能使用,r模式不能操作。

      f.tell()打印光标位置。

      进度条:

      import sys,sys.stdout就是标准输出的文件句柄,可进行读写操作,

    import sys
    sys.stdout.write("hello")
    输出结果:
    hello

      print函数就是stdout实现的。

    import sys
    
    for i in range(100):
        s="
    %d%% %s"%(i,"#"*i)
        sys.stdout.write(s)
        sys.stdout.flush()
        import time
        time.sleep(0.5)
    进度条代码

      seek可完成断点续传。

      with open() as f:获得文件句柄,为了避免打开文件后忘记关闭,可以通过这种方式获得文件句柄。当with代码块执行完毕时,内部会自动关闭并释放文件资源。with支持同时对多个文件的上下文进行管理。

    with open('log1') as obj1, open('log2') as obj2:
        pass

      练习取出网址中的server打印出来:

    frontend oldboy.org
             bind 0.0.0.0:80
             option httplog
             option httpclose
             option  forwardfor
             log global
             acl www hdr_reg(host) -i www.oldboy.org
             use_backend www.oldboy.org if www
    
    backend www.oldboy1.org
            server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33
            server 10.10.10.1 10.10.10.1 weight 22   maxconn 2000
            server 2.2.2.4 2.2.2.4       weight 20   maxconn 3000
    
    backend www.oldboy2.org
            server 3.3.3.3 3.3.3.3 weight 20 maxconn 3000
    
    backend www.oldboy20.org
            server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33
    文件haproxy.conf
    while 1:
    
    
        m=input('please input url:').strip()
    
        l=[]
    
        flag=False
    
        with open("haproxy.conf",encoding="utf8") as f_read:
    
            for line in f_read:
    
                if line.startswith("backend") and m in line:  #第一步:信息匹配
                    flag=True   # 设定一个开关
                    continue
    
                if line.startswith("backend") and flag:  # 第三部:跳出循环
                    break
    
                if flag:     # 第二步:将信息存放到列表
                    #[]
                    l.append(line.strip())
    
            for i in l:
                print(i)
    View Code

      文件修改:

      文件修改的思路就是创建一个新的文件,遍历原文件修改要改的东西存到另一个新的文件,文件名称交换。

    import os
    with open("test",encoding="utf8") as f_read,open("test7",encoding="utf8",mode="w") as f_write:
        count=0
        for line in f_read:
            if count==3:
                line="".join([line.strip(),"岳飞
    "])
            f_write.write(line)
            count+=1
    
    os.rename("test", "test_bak")
    os.rename("test7","test")
    文件修改的方式
  • 相关阅读:
    让DateTimePicker显示空时间值 (转) 武胜
    Webcam in C#: AForge.NET (转) 武胜
    C#自定义事件的步骤 武胜
    交换机VLAN的配置 (转) 武胜
    虚拟LAN安全的最佳实践经验 (转) 武胜
    绿色版 MySQL 的安装配置 (转) 武胜
    net 中捕获摄像头视频的方式及对比(How to Capture Camera Video via .Net) (转) 武胜
    C# WndProc的使用方法 (转) 武胜
    金融证券业Windows NT服务器热备份系统工作示意图 (转) 武胜
    ubuntu下配置samba实现文件夹共享
  • 原文地址:https://www.cnblogs.com/Jeffding/p/7470435.html
Copyright © 2020-2023  润新知