zoukankan      html  css  js  c++  java
  • python基础-文本操作

    文件IO

    #文件的基本操作

    1.在python中你可以用file对象做大部分的文件操作

    2.一般步骤:

      先用python内置的open()函数打开一个文件,并创建一个file对象,

      然后调用相关方法进行操作

    语法:

    file_object = open(file_name[,acess_mode][,buffering])

    file_name变量是一个包含了你要访问的文件名称的字符串值

    access_mode决定了打开文件的模式:只读,写入,追加等.这个参数是非强制的,默认文件访问模式为只读(r)

    buffering:如果buffering的值设为0,就不会有寄存.如果buffering值取1,访问文件时会寄存

      如果将buffering的值设为大于1的整数,表明了这就是寄存区的缓冲大小,如果取负值,寄存区的缓冲大小则为系统默认

    不同模式打开文件的完全列表:

      

    file对象的属性

    一个文件被打开后,你有一个file对象,你可以得到有关文件的各种信息

    以下是和file对象相关的所有属性的列表:

    file.closed  返回true如果文件已被关闭,否则返回false

    file.mode  返回被打开文件的访问模式

    file.name  返回文件的名称

    file.softsapce  如果用print输出后,必须跟一个空格符,则返回false,否则返回true

    doc = "D:python workspacelog.txt"
    
    print("演示open")
    fo = open(doc,'w') #w代表写入
    print("文件名是",fo.name)
    print("是否关闭了文件",fo.closed)
    print("打开方式",fo.mode)
    
    
    print("
    演示close")
    fo = open(doc,'w')
    print("文件名是",fo.name)
    #关闭打开的文件
    fo.close()
    print("是否关闭了文件",fo.closed)
    
    
    print("
    演示写入")
    fo = open(doc,'w')    
    fo.write("好与坏")
    #关闭打开的文件
    fo.close()
    
    '''
    w 换成 wb,会报错
    TypeError: 'str' does not support the buffer interface
    '''
    
    print("
    演示read")
    #打开一个文件
    fo = open(doc,"r+")#r+ 读写
    str = fo.read()
    print("文件中的内容是",str)
    #关闭文件
    fo.close()

    结果:

    演示open
    文件名是 D:python workspacelog.txt
    是否关闭了文件 False
    打开方式 w
    
    演示close
    文件名是 D:python workspacelog.txt
    是否关闭了文件 True
    
    演示写入
    
    演示read
    文件中的内容是 好与坏

    文件名/t会有转义,三种写法避免:

    fileName = r"D: est1 est2 est.txt"  加r

    filename = "D:\test1\test2 est.txt"  加双\

    filename = "D:/test1/test2/test.txt"  改成/  (推荐这种)

    文件定位

    1.tell()方法告诉你文件内的当前位置

    2.seek(offset[,where])方法改变当前的位置

    offset变量便是要移动的位数.where变量置顶开始移动的参考位置

    where为0表示文件开始处,这是默认值;1表示当前位置;2表示文件结尾

    #打开一个文件
    doc = "D:/python workspace/log.txt"
    fo = open(doc,"r+")
    str = fo.read()
    print("文件中的内容是:",str)
    #查找当前位置
    position = fo.tell()
    print("当前位置:",position)
    
    #把指针再次重新定位到文件开头
    position = fo.seek(0,0)
    str = fo.read(2)#读两个字符
    print("文件中的内容是:",str)
    str = fo.read(-1)#读光标之后的全部
    print("文件中的内容是:",str)
    
    #关闭打开的文件
    fo.close()

    结果:

    文件中的内容是: 好与坏 坏与好
    当前位置: 13
    文件中的内容是: 好与
    文件中的内容是: 坏 坏与好

    练习:以w方式打开文件,通过write和writelines分别写入内容

    file.write(str)  将字符串写入文件,没有返回值

    file.writelines(sequence)  向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符

    #打开一个文件
    doc_1 = "D:/python workspace/log1.txt"
    fo = open(doc_1,"w")
    fo.write("试试怕什么,又不会怀孕1")
    
    fo.writelines(["试试怕什么1
    ","又不会怀孕2"])
    
    #关闭文件
    fo.close()

    write是写入一行

    writelines可以写入多行,用 分行

    结果:

    以w+方式打开文件,写两行数据,读取文件全部内容

    doc_2 = "D:/python workspace/log2.txt"
    fo = open(doc_2,"w+")
    fo.writelines(["试试怕什么1
    ","又不会怀孕2"])
    
    #查看当前位置
    position = fo.tell()
    print("当前位置:",position)
    
    #重置位置
    #把指针再次重新定位到文件开头
    position = fo.seek(0,0)
    
    
    #读取文件
    str1 = fo.read()
    print(str1)

    #readlins()读出是列表
    #str2 = fo.readlines()
    #for i in str2:
    #  print(i)
    #关闭文件 fo.close()

    第一次写的时候,发现打的空,

    加入查找当前位置语句,发现写完后,光标在最末位,so重置到初始位置后,再读出所有文件

    结果:

    当前位置: 24
    试试怕什么1
    又不会怀孕2

    清空一个文件

    file.truncate([size]):截取文件,截取的字节通过size置顶,默认为当前额外年间位置

    如果没有指定size则会从当前位置截取,也就相当于都删除了

  • 相关阅读:
    Spark Streaming 调优指南
    Hive实战之Youtube数据集
    【源码解析】BlockManager详解
    Spark操作HBase问题:java.io.IOException: Non-increasing Bloom keys
    Spark实战之读写HBase
    ZooKeeper的简单理解
    Flume-ng源码解析之Source组件
    Flume-ng源码解析之Sink组件
    Flume-ng源码解析之Channel组件
    Flume-ng源码解析之启动流程
  • 原文地址:https://www.cnblogs.com/R-bear/p/6996443.html
Copyright © 2011-2022 走看看