• 文件操作


    r模式

    #can文件内容为(德玛西亚
                  你的剑就是我的剑)                   ‘
    ’ 为换行符
    # 在只读模式下写入内容会报错。
    # f=open('can.py','r',encoding='utf-8')
    # k=f.read()        ##read是逐字符地读取,read可以指定参数,设定需要读取多少字符,无论一个英文字母还是一个汉字都是一个字符。 缺点:如果读取的文件很大,会使内存溢出
    # print(k)
    # f.close()
    #结果显示:德玛西亚
          你的剑就是我的剑
     
    #readline
    # f=open('can.py','r',encoding='utf-8')
    # k=f.readline()        ##readline只能读取第一行代码,原理是读取到第一个换行符就停止.  缺点:不知道光标在哪里停止
    # print(k)
    # f.close()
    # #结果显示 :  德玛西亚
    # #readlines
    # f=open('can.py','r',encoding='utf-8')
    # k=f.readlines()        #readlines会把内容以列表的形式输出,一次性读取   缺点:如果读取的文件很大,会使内存溢出
    # print(k)
    # f.close()
    #结果显示:['德玛西亚
    ', '你的剑就是我的剑']
    
    
    # f = open('can.py','r',encoding='utf-8')
    # for k in f.readlines(): #使用for循环可以把内容按字符串输出。
    #   print(k) #输出一行内容输出一个空行,一行内容一行空格... 因为文件中每行内容后面都有一个换行符,而且print()语句本身就可以换行,如果不想输出空行,
    就需要使用下面的语句:print(line.strip()) # f.close()

    德玛西亚

    你的剑就是我的剑


    w模式

    # 在进行操作前,文件中所有内容会被清空。比如在can中写入'hello world',程序执行后file1中就只剩下一句'hello world',can中之前都内容都被删除了。
    # f =open('can.py','w',encoding='utf-8')  #由于Python3的默认编码方式是Unicode,所以在写入文件的时候需要调用utf8,以utf8的方式保存,
    这时pycharm(默认编码方式是utf8)才能正确读取,当读取文件时,文件是utf8格式,pycharm也是utf8,就不需要调用了。
    # w = f.write('hello world') # print(w) #这里并不打印'hello world',只打印写入多少字符 ()内只能传入字符串 # f.close()
     


    a模式

    与w模式不同的是,a模式不会把原来内容清空,而是光标移到内容最后位置,继续写入新内容。比如在最后追加'hello world'
    # f =open('can.py','a',encoding='utf-8')  #由于Python3的默认编码方式是Unicode,所以在写入文件的时候需要调用utf8,以utf8的方式保存,这时
    pycharm(默认编码方式是utf8)才能正确读取,当读取文件时,文件是utf8格式,pycharm也是utf8,就不需要调用了。
    # w = f.write('hello world') # print(w) #还是只打印写入多少字符 # f.close()
    
    

     tell和seek

    # tell:查询文件中光标位置
    # seek:光标定位                                           #tell()和seek(0)指的都是字节,  read( )括号内的数字,指的是字符。
    # f = open('file.py','r')
    # print(f.tell())  #光标默认在起始位置    ,读是从0开始
    # f.seek(10)    #把光标定位到第10个字节之后
    # print(f.tell())  #输出10
    # f.close()
    # ----------------------
    # f = open('file','w')
    # print(f.tell())  #先清空内容,光标回到0位置
    # f.seek(10)
    # print(f.tell())
    # f.close()
    # ----------------------r
    # f = open('file1','a')
    # print(f.tell())  #追加光标默认在最后位置
    # f.write('哈哈')
    # print(f.tell())  #光标向后13个字符,仍在最后位置
    # f.close()
     
    truncate 截断
    # 不能是r模式下执行,
    # w模式下,已经清空所有数据,使用truncate没有任何意义,
    # a模式下,截断指定位置后的内容。
    # f = open('file','a')
    # f.truncate(6) #只显示6个字节的内容(6个英文字符或两个汉字),后面的内容被清空。

    光标位置总结
    # f = open('file', 'r')
    # print(f.read(6))  # 6个字符    read()括号内的数字是字符,字符是能看到的最小的单位。
    # print(f.tell())  # 位置13字节,一个汉字三个字节
    # f.close()
    #
    # f = open('file', 'r')
    # f.seek(6)  # 6个字节          seek()括号内的数字是字节
    # print(f.tell())
    # f.close()
    #
    # f = open('file', 'a')
    # print(f.tell())  # 光标默认在最后位置
    # f.write('你好 世界')
    # print(f.tell())  # 光标向后9个字节,一个汉字三个字节,仍在最后位置
    # f.close()
    #
    # f = open('file', 'a', encoding='utf-8')
    # print(f.truncate(6))  # 由于需要光标定位位置,所以也是字节。只显示6个字节的内容(6个英文字母或两个汉字,一个汉字三个字节),后面的内容被清空。
    # f.close()
     

    另外3种模式:r+、w+、a+
    # r +:读写模式,光标默认在起始位置,当需要写入的时候,光标自动移到最后
    #
    # w +:写读模式,先清空原内容,再写入,也能够读取
    #
    # a +:追加读模式,光标默认在最后位置,直接写入,也能够读取。
    # f = open('can', 'a')
    # print(f.tell())  # 末尾6位置
    # f.close()
    #
    # f = open('file', 'r+')
    # print(f.tell())  # 0位置can
    # print(f.readline())  # 读取第一行
    # f.write('哈哈哈')  # 光标移到末尾在6位置并写入
    # print(f.tell())  # 15位置
    # f.seek(0)  # 光标移到0位置
    # print(f.readline())  # 读取第一行
    # f.close()

    with语句
    # 可以同时对多个文件同时操作,当with代码块执行完毕时,会自动关闭文件释放内存资源,不用特意加f.close() ,我们通过下面的示# 例体会with的用法和好处。
    
    #(1)f2 = open('file2','w',encoding='utf8')  #写入的时候必须加utf8
    # f1 = open('file','r')
    # f1.close()
    # f2.close()
    
    # (2)with open('file','r') as f1,open('file2','w',encoding='utf8') as f2: 
    #(1)和(2)是一样的作用

    文件删除
    
    
    # import os
    # os.remove()       #删除文件
    # os.rename('要被重命名的文件名','重命名后的文件名')       #重命名文件
    
    
    
     


  • 相关阅读:
    使用System.getProperty方法,如何配置JVM系统属性
    java的System.getProperty()方法可以获取的值
    文档系统
    会议系统
    MyEclipse优化】-----如何合理设置MyEclipse中的validation选项
    myeclipse10 java builder path libraries 添加tomcat
    WPF Step By Step 系列-Prism框架在项目中使用
    【MVVM Light】新手初识MVVM,你一看就会
    Android获取全部存储卡挂载路径
    VME总线
  • 原文地址:https://www.cnblogs.com/liusouthern/p/8111074.html
Copyright © 2020-2023  润新知