• (安全之路)从头开始学python编程之文件操作


    0x00 python学习路径

    b站(哔哩哔哩)视频,w3cschool(详情百度),官方文档,各大群内获取资料等等方式

    0x01 python的学习要点

     open()函数:有两个参数,文件名跟模式,模式分四种

    • "r" - 读取 - 默认值。打开文件进行读取,如果文件不存在则报错。
    • "a" - 追加 - 打开供追加的文件,如果不存在则创建该文件。
    • "w" - 写入 - 打开文件进行写入,如果文件不存在则创建该文件。
    • "x" - 创建 - 创建指定的文件,如果文件存在则返回错误。
    • 可以指定文件是应该作为二进制还是文本模式进行处理。

    • "t" (txt)- 文本 - 默认值。文本模式。"b"(binary) - 二进制 - 二进制模式(例如图像)。

    0x02 利用函数进行文本调用

    • f = open("demofile.txt")跟f = open("demofile.txt", "rt")是一样的,因为r(read)t(txt)是默认的,不写也没有关系,不过可以知道open函数的使用方法。要确定文件是否存在,不然会报错。
    • 在open函数(用于返回文件对象)后,还有一个read函数,用于读取文件内容,例如
    • f = open("demofile.txt", "r")
      print(f.read())
    • 注释:如果你第一次尝试这个操作,不打印,只open的话,是没有任何回显的哦,不要以为是出了什么问题,要记得print。(因为我傻傻的遇到了),还有就是要把文件拖入程序的文件夹中,不然获取不到文件的哦。(常识)
    • 在read函数里面可以用数字表示显示前几个字符,如read(5),则显示文件中前五个字符,readline则是返回第一行,有意思的是,如果调用两次readline则是调用前两行,而不是重复调用第一行两次!
    • f = open("demofile.txt", "r")
      print(f.readline())
      print(f.readline())
    • 逐行遍历整个文件
    • f = open("demofile.txt", "r")
      for x in f:
        print(x)
    • 调用完以后要保持一个好习惯,拿来了要记得用完带走,在运行完方法后,不用了要f.close()来关闭文件
    • 注释:在某些情况下,由于缓冲,您应该始终关闭文件,在关闭文件之前,对文件所做的更改可能不会显示。这句话其实我现在不是很懂,但是告诉我们还是得好好的关闭文件。
    • 接着就是write()函数,用于在你打开的文件中写入你想要添加的内容
    • f = open("demofile2.txt", "a")
      f.write("Now the file has more content!")
      f.close()
      
      # 追加后,打开并读取该文件:
      f = open("demofile2.txt", "r")
      print(f.read())
    • 注释:追加后务必要先关闭文件,然后再次重新打开,不能直接读取不然会报错,提示不能读文件,可能就是上面的缓冲问题,得关闭文件。
    • 像这些就很好理解,都没有什么绕的地方,但是注意open里面的参数a,是代表追加,如里面改成了w,则会直接覆盖文件内原本的所有内容,切记要当心!!多多练习,分清参数的区别。
    • 最后就是文件删除了,文件删除必须导入OS模块,并运行其 os.remove() 函数:
    • import os
      os.remove("demofile.txt")
    • 如果你确定存在这个文件,并且名字没有打错,这样就可以删除文件了,如果不存在是会报错的,为了防止报错,我们还需要验证文件是否存在:
    • import os
      if os.path.exists("demofile.txt"):
        os.remove("demofile.txt")
      else:
        print("The file does not exist")
    • 除了删除文件,还有可以删除文件夹这种骚操作,具体就是调用os.rmdir()函数:
    • import os
      os.rmdir("myfolder")
    • 就这样就能删除整个myfolder文件夹,但是需要注意的是,文件夹里面有文件,你是无法删除的,只能删除空文件!!!
    • 问题:如何删除某一行中的内容?
    • 附上一段综合代码,这个就是问题的例子,如果能够解决这个问题,证明已经基本掌握对模式的概念跟文件所能使用的大多数方法。(这段代码我也是踩了不少坑)
    • files = open('test.txt','w+')
      files.write("123
      123
      123
      123")
      files.close()
      files = open('test.txt','r+')
      l4 = files.readlines()
      print(l4)
      l4[2]=''
      files.close()
      files = open('test.txt','w+')
      l4 = files.writelines(l4)
      files.close()
      files = open('test.txt','r+')
      print(files.read())
      files.close()

    0x03 总结

      有趣的是,read(5)以后,如果你还要readline(),那么它会先把你read以后那行后面的数据当成一行输出,而不是直接去找第二行输出,还有调试的时候记得多用#注释符,批量注释可以用ctrl+/进行批量注释便于调试程序,还可以设断点哦,这个以后再谈。文件的基本操作就已经结束了,这个感觉还是相当的实用的,对于脚本而言,可以说是非常重要了吧,多加练习,亲自实践才能掌握的哦(不会编程的安全人员只是一个脚本小子(小声比比))。有问题请指正,感谢!

    我的志向是星辰大海。
  • 相关阅读:
    TIME_WAIT和CLOSE_WAIT的区别
    shell备份脚本
    No package 'eventlog' found
    Linux下升级安装Python-3.6.2版本
    mysql的binlog安全删除的一种方法
    windows 清理 cbs.log 文件
    Linux crontab 查看所有用户的crontab任务
    java抽象类与接口回顾
    java类的回顾
    windows的MySQL安装
  • 原文地址:https://www.cnblogs.com/xiaqingfeng/p/11926383.html
Copyright © 2020-2023  润新知