zoukankan      html  css  js  c++  java
  • Python之文件操作

    操作模式

               1。     r 只读模式

               2。    w 创建模式,若文件已存在,则覆盖旧文件

               3。    a追加模式,新数据会写到文件末尾

    创建文件

    f = open(file='D:/工作日常/staff.txt',mode='w')
    f.write("Alex  CEO  600
    ")
    f.write("黑姑娘  行政  5000
    ")
    f.close()

    只读模式

    f = open(file='兼职白领学生空姐模特护士联系方式.txt',mode='r')
    print(f.readline())  # 读一行
    print('------分隔符-------')
    data = f.read()  # 读所有,剩下的所有
    print(data)
    f.close()

    追加模式

    f = open(file='兼职白领学生空姐模特护士联系方式.txt',mode='a')
    f.write("黑姑娘 北京  168  48
    ")  # 会追加到文件尾部
    f.close()

    循环文件

    f = open(file='兼职白领学生空姐模特护士联系方式.txt',mode='r')
    for line in f:
        line = line.split()
        name,addr,height,weight,phone = line
        height = int(height)
        weight = int(weight)
        if height > 170 and weight <= 50:
            print(line)
    f.close()

    其他功能

        def mode(self) -> str:
            返回文件打开的模式
        def name(self) -> str:
            返回文件名
        def fileno(self, *args, **kwargs): # real signature unknown
            返回文件句柄在内核中的索引值,以后做IO多路复用时可以用到
        def flush(self, *args, **kwargs): # real signature unknown
            把文件从内存buffer里强制刷新到硬盘
        def readable(self, *args, **kwargs): # real signature unknown
            判断是否可读
        def readline(self, *args, **kwargs): # real signature unknown
            只读一行,遇到
     or 
    为止
        def seek(self, *args, **kwargs): # real signature unknown
            把操作文件的光标移到指定位置
            *注意seek的长度是按字节算的, 字符编码存每个字符所占的字节长度不一样。
            如“路飞学城” 用gbk存是2个字节一个字,用utf-8就是3个字节,因此以gbk打开时,seek(4) 就把光标切换到了“飞”和“学”两个字中间。
            但如果是utf8,seek(4)会导致,拿到了飞这个字的一部分字节,打印的话会报错,因为处理剩下的文本时发现用utf8处理不了了,因为编码对不上了。少了一个字节
        def seekable(self, *args, **kwargs): # real signature unknown
            判断文件是否可进行seek操作
        def tell(self, *args, **kwargs): # real signature unknown
            返回当前文件操作光标位置 
        def truncate(self, *args, **kwargs): # real signature unknown
            按指定长度截断文件
            *指定长度的话,就从文件开头开始截断指定长度,不指定长度的话,就从当前位置到文件尾部的内容全去掉。
        def writable(self, *args, **kwargs): # real signature unknown
            判断文件是否可写

    不占硬盘方式的文件修改代码示例

    import os
    f_name = "兼职白领学生空姐模特护士联系方式.txt"
    f_new_name = "%s.new" % f_name
    old_str = "刘诺涵"
    new_str = "[黑姑娘]"
    f = open(f_name,'r')
    f_new = open(f_new_name,'w')
    for line in f:
        if old_str in line:
            new_line = line.replace(old_str,new_str)
        else:
            new_line = line
        f_new.write(new_line)
    f.close()
    f_new.close()
    os.rename(f_new_name,f_name) #把新文件名字改成原文件 的名字,就把之前的覆盖掉了,windows使用os.replace #
  • 相关阅读:
    Android Studio “Project Structure”选项目录结构显示异常
    Android 不通过USB数据线调试的方法
    Android OpenGL ES 开发教程 从入门到精通
    Android NIO(Noblocking I/O非阻塞I/O)小结
    phpStudy3——往数据库中添加数据
    phpStudy2——PHP脚本访问MySql数据库
    phpStudy1——PHP文件获取html提交的参数
    php页面的基本语法
    安装使用phpStudy在本机配置php运行环境
    运行php网站需要安装什么
  • 原文地址:https://www.cnblogs.com/jrb2018/p/11033017.html
Copyright © 2011-2022 走看看