zoukankan      html  css  js  c++  java
  • ~~Python文件简单操作~~

    进击のpython

    ***** # Python文件操作

    在说Python的文件操作之前

    我们可以先思考一个问题

    平时我们是怎么对电脑中的文件进行操作的呢?


    打开电脑⇨找到文件⇨打开文件⇨读文件⇨修改文件⇨保存文件⇨关闭文件

    对吧,这就是我们打开文件的基本流程

    而 Python 打开文件的方式,也是这样的

    打开电脑 ⇨ f=open(filename) ⇨ f.read() ⇨ f.write() ⇨ f.close()


    f = open(filename):打开文件

    f.read():读文件

    f.write():写文件

    f.close():保存并关闭


    • 文件打开模式

      这个概念可能会很陌生

      在word中,打开文件之后

      就可以对文件进行 读,写,修改等操作

      但是在python中,只能以一种模式操作文件

      需要确定文件打开模式,才能够进行相应操作

      r read 读模式

      w write 创建模式 如果硬盘里有相同名字的文件,就覆盖掉

      a append 追加模式


    • 创建文件

      f = open("123.txt", mode="w")
      f.write("dajiahao woshipeiqi
      ")
      f.write("zheshiwodemama
      ")
      f.write("zheshiwodebaba
      ")
      f.close()
      

    没什么说的,很简单


    • 读取模式

      f = open("123.txt", mode="r")
      t = f.read()
      print(t)
      f.close()
      

    (换个背景颜色)

    还有个语法是 readline() 读一行 自己试试

    因为文件只能以一种形式进行操作

    那当我用读取模式来操作文件之后,调用创建呢?

    f = open("123.txt", mode="r")
    t = f.read()
    print(t)
    f.write("hahh")
    f.close()
    

    看到报错了吧?了解没?凑弟弟们!


    • 追加模式

      追加模式就是在文件尾部添加数据

      这么说可能不太好理解

      直接上例子吧

    当我执行下面的语句

    f = open("123.txt", mode="a")
    f.write("这是追加模式")
    f.close()
    

    执行结果就是这样的:

    如果我刚开始的光标在这个位置,再执行相同的语句,就是这种情况:

    还看不懂?那就多执行几下看看

    有灵性了没???(没有灵性就自己多操作两遍,看不如动手!)


    • 循环文件

      无论你想做什么,都要先打开文件

      你觉得我说的有没有道理?

      f = open("123.txt") # 默认模式是read
      for line in f :
          print(line)
      f.close()
      

    欸?这就有问题了,我文件的里面也没有换行啊,怎么打印出来有换行啊?

    其实在每行的末尾,他都默认的添加一个 来进行换行

    不信?

    f = open("123.txt")
    # for line in f :
    #     print(line)
    print(f.readlines())
    f.close()
    

    看到了吗?

    那遇到问题,怎么解决呢?

    可以这样:print("",strip())

    自己试试!


    • 需求

      下面这个文件,我想输出身高超过175的怎么办?

    可以利用循环来做

    f = open("123.txt")
    for line in f:
        line = line.split()
        if int(line[2]) > 175:
            print(line)
    f.close()
    

    我还想对体重有要求,这就不用写了吧!


    • 语句

      seek(x) 光标移动,走x个字节

      flush()强制将缓存刷到硬盘

      tell()返回光标位置,也是字节单位

      truncate()指定长度截断文件,指定长度,从开头到A;不指定就是A到尾


    • 混合模式

      没想到吧,其实除了三种方法以外,还有另外的三种模式。

      r+ 读写,能写能读,跟追加一样

      w+ 写读,没什么屁用

      a+ 追加读,光标在文件尾部,全是追加模式

      自己用,没啥说的,混子,更加好用


    • 问题

      r+ 覆盖的问题

      可以将文件放在内存中,然后对文件进行增删改查,最后覆盖到硬盘上

      那不是占内存吗?有没有别的方法?

      那你不想占内存,就得占硬盘

      边读边写边存

      import os
      
      old_file = "123.txt"
      new_file = "456.txt"
      
      f_old = open(old_file,"r")
      f_new = open(new_file, "w")
      
      old_str = "shenzhen"
      new_str = "深圳"
      
      for line in f_old:
          if "shenzhen" in line:
              line = line.replace(old_str, new_str)
          f_new.write(line)
      
      f_old.close()
      f_new.close()
      
      os.remove(old_file)
      os.rename(new_file,old_file)
      

      别问os干什么的,有能耐你难为百度去啊…………


    *有个练习*
    *还挺简单*
  • 相关阅读:
    UnityVS(Visual Studio Tools For Unity)的安装与使用
    Balsamiq Mockups注册码
    python基础之os.system函数
    jenkins配置记录(1)--添加用户权限
    chromedriver与chrome各版本及下载地址
    高阶面试官应掌握哪些面试技巧
    [面试技巧]16个经典面试问题回答思路
    自动代码质量分析(GitLab+JenKins+SonarQube)
    Git提交代码自动触发JenKins构建项目
    Allure 安装及使用
  • 原文地址:https://www.cnblogs.com/jevious/p/11126457.html
Copyright © 2011-2022 走看看