zoukankan      html  css  js  c++  java
  • (安全之路)从头开始学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+/进行批量注释便于调试程序,还可以设断点哦,这个以后再谈。文件的基本操作就已经结束了,这个感觉还是相当的实用的,对于脚本而言,可以说是非常重要了吧,多加练习,亲自实践才能掌握的哦(不会编程的安全人员只是一个脚本小子(小声比比))。有问题请指正,感谢!

    我的志向是星辰大海。
  • 相关阅读:
    无限维
    黎曼流形
    why we need virtual key word
    TOJ 4119 Split Equally
    TOJ 4003 Next Permutation
    TOJ 4002 Palindrome Generator
    TOJ 2749 Absent Substrings
    TOJ 2641 Gene
    TOJ 2861 Octal Fractions
    TOJ 4394 Rebuild Road
  • 原文地址:https://www.cnblogs.com/xiaqingfeng/p/11926383.html
Copyright © 2011-2022 走看看