zoukankan      html  css  js  c++  java
  • Python------补充部分文件操作

    文件操作

    1. 语法

      # f = open("文件路径", mode="模式", encoding="编码")
      # open()   调用操作系统打开文件
      # mode     对文件的操作方式
      # encoding 文件的编码  --  存储编码要统一
      #           win -- 默认gbk
      #           linux,mac -- 默认utf-8
      # f        文件句柄 -- 操作文件的途径
      
      # 另一种打开文件的方式: 帮助自动关闭文件;可以同时开多个文件,用逗号隔开;也可以同时操作一个文件
      with open("a", mode="r", encoding="utf-8") as f,
           open("b", mode="w", encoding="utf-8") as f1: 
      
      import os
      print(os.getcwd()) # 查看当前工作路径
      os.remove() # 删除文件
      os.rename() # 更改文件名.(旧名,新名)
      
    2. 模式

      • # r
        f = open("a", mode="r", encoding="utf-8")
        contend = f.read()   # 全部读取
        print(contend)
        print(f.read(3))     # 字符读取
        print(f.readline())  # 读取一行,()内可以加入需要读取本行的几个字符
        print(f,randlines()) # 读取每一行,存储到列表中
        for line in f:       # 一行一行读取  -- 防止内存溢出
             print(line)
        
        # rb -- 读非文本文件,不能指定编码,
        f = open("a", mode="rb")
        print(f.read(3))     # 读取3个字节
        
        # r+ -- 读写 -- 先读后写
        f = open("a", mode="r+", encoding="utf-8")
        print(f.read())
        f.write("你好啊")
        f.flush()
        f.close()            # 关闭文件,释放内存
        
        # r+b
        
      • # w 清空写 -- 没有文件就创建,有就打开,先清空,再写入
        f = open("a", mode="w", encoding="utf-8")
        f.write("乳娃娃")  # 不能写入int
        f.flush()
        f.close()
        
        # wb
        # w+ -- 先清空,写入,再读.用不着
        # w+b
        
        # a 追加写 -- 文件末尾写入
        f = open("a", mode="a", encoding="utf-8")
        f.write("啊啊啊啊啊啊啊,好烦啊")
        f.flush()
        f.close()
        
        # ab
        # a+ -- 追加读,光标默认在末尾
        f = open("a", mode="a+", encoding="utf-8")
        print(f.read())
        f.write("真的废物")
        
        # a+b
        
    3. 其他操作

      • 绝对路径 -- 从磁盘的根处查找

      • 相对路径 -- 相对于当前文件进行查找

      • tell() -- 查看光标位置,单位是字节

      • seek(偏移量,起始位置) -- 起始位置默认0--开头,1--当前位置,2--末尾

        总结

    # open()  # 打开
    	# close	要关闭文件
    	# 写模式下需要刷新  flush()
    
    	# r 只读
    	# 	read(3)   看对文件操作的模式来判断是字符还是字节
    	# 	mode = 'r' 时候是字符
    	# 	mode = 'rb' 时候是字节
    	# readline()   读取一行,自带
    (换行)
    	# readlines()  读取全部以一行一行的形式存在放列表里
    
    	# a 追加
    		#文件的末尾写
    	# w 覆盖写
    		# 先清空文件,后写入文件
    
    	# rb ,wb ab自己试
    		# 只要是带b的模式,注意的是不是不能有encoding
    
    	# a+
    	#   追加 + 读     注意 不管怎么读都读不到内容,除非移动光标
    
    	# w+
    	# 	覆盖写 + 读   注意:先写后读  先读后写   除非移动光标
    
    	# r+
    	# 	读 + 写      注意: 先读后写
    
    	# 其他操作
    
    	# seek()  移动光标
    	#  	0,0    开头
    	# 	0,1    当前
    	# 	0,2    末尾
    
    	# 3 如果是文字就移动一位,如果是英文就移动3位
    
    	# tell() 查看光标 光标是按照字节数的
    
    	# truncate()  截取  内容是字节数
    
    
    # 文件修改
    import os  # 导入  os和操作系统相关
    
    # os.rename()  # 重命名  第一个参数旧的名字,第二个是新的名字
    # os.remove()    # 删除这个文件  字符串
    
    
    # with open('t1','r',encoding='utf-8')as f,
    # 		open('t2','w',encoding='utf-8')as f1:
    
    
    # 路径:
    
    # 绝对路劲: 从磁盘根目录开始查找
    # 相对路劲: 相对于某个东西来查找就是相对路径
    # 	返回上一级 ..
    # c:user...    可以把单个写成双\
    # 在路径的前面加一个r
    # 以上两种就是转义
    
    
  • 相关阅读:
    [bzoj1911][Apio2010特别行动队] (动态规划+斜率优化)
    [bzoj1597][usaco2008 mar]土地购买 (动态规划+斜率优化)
    [bzoj1901][zoj2112][Dynamic Rankings] (整体二分+树状数组 or 动态开点线段树 or 主席树)
    整体二分初步
    bzoj[3238][ahoi差异]
    概率dp学习
    poj[2104]K-th Number
    hdu[1711]number sequence
    hdu[2222]keywords search
    poj[1187][Noi 01]陨石的秘密
  • 原文地址:https://www.cnblogs.com/hql1117/p/11069678.html
Copyright © 2011-2022 走看看