zoukankan      html  css  js  c++  java
  • python_文件操作

    读:  

    1 f=open("骗自己",'r',encoding='utf8') #打开指定文件,获取文件句柄 “f=open("/路径/文件名",'操作模式',encoding='指定编码格式')” r:为只读模式
    2 data=f.read()   #读取全部内容
    3 #data=f.read(10)    #读取n(10)个字节 (read方法认为一个中文也是一个字节,就是这么牛掰)
    4 print(data)
    5 print(f.readline().strip()) # readline方法可以输出一行,print输出默认会输出一个换行,加strip()方法是清除print的换行,光标在哪就从那开始输出
    6 print(f.readlines()) #以列表的形式输出文件的所有内容,
    7 f.close() #关闭文件 (python默认会自动执行关闭操作,但还是要自己指定一下.因为老百姓有句名言,信自己得永生)

    readlines()方法读取所有内容,并在第六行添加注释:

    1 f=open("骗自己",'r',encoding='utf8')
    2 data=f.readlines()
    3 f.close()
    4 for i,n in enumerate(data):
    5     if i == 6:
    6         n="".join([n.strip(),"#这一句我不会唱"])
    7     print(n.strip())

    readlines()方法为把文件里所有内容都放到内存中,然后一起读出来,对于大文件而言对性能会有极大的影响,不建议使用

    读大文件是建议使用下边的方法:

    1 f=open("骗自己",'r',encoding='utf8')
    2 for i in f:
    3     print(i.strip()

    单独输出 f 是一个内存对象:<_io.TextIOWrapper name='骗自己' mode='r' encoding='utf8'>
    python中 for 语句对读取内存对象做了迭代器的处理,(迭代器:使用一行,加载一行,删除后再继续加载下一行)

      能调用方法的一定是对象

              ---- alex的徒弟说让记住这句话

    写:

    1 f=open("骗自己",'w',encoding="utf8") #w:为只写模式,如果文件不存在则会创建,如果文件中有内容会将其清空
    2 f.write("如果有天自己变的很有钱")   #写入到内存
    3 f.write("
    我的第一选择不是去环游世界") #
    为换行符,python默认是不会跟你加的,因为一个内存块默认为4k...而写入内容的时候会根据光标所在位置进行写入...算了,你懂就好
    4 f.close()   #关闭文件,并将内存中的内容加载到磁盘中

    追加:

    1 f=open("骗自己",'a',encoding='utf8') #a:为追加模式,如果文件不存在则会创建,调动光标到文件末尾
    2 f.write("躺在世界上最大最软的沙发里")  #写入到内存
    3 f.write("
    吃了就睡醒了再吃先过一年")   #
    也TMD是换行符,很强
    4 f.close()   #关闭文件,并将内存中的内容加载到磁盘中

     

    读、写、追加的升级版:

     1 f=open("骗自己",'r+',encoding='utf8')        # r+:读写模式
     2 print(f.readline())                 # 读取光标所在的那一行
     3 f.write("---------------------")        # 写的操作会追加在文件末尾
     4 
     5 f=open("骗自己",'w+',encoding='utf8')       # w+:写读模式,文件不存在则创建,文件存在则清空文件内容
     6 f.write("---------------------")           # 写的操作会追加在文件末尾
     7 print(f.seek(0))
     8 print(f.readline())                        # 写完后光标在文件末尾,所以内容读取不到,需要将光标移动到0的位置才可以读的到
     9 
    10 f=open("骗自己",'a+',encoding='utf8')     # a+:追加读,光标会直接调整的末尾
    11 print(f.readline())                        #光标在默认,直接读没有内容
    12 f.write("-------------")                   #写的内容会直接追加到文件末尾

    其他操作:

    1 print(f.tell())  #tell()方法获取当前光标的位置
    2 f.seek(5)        #指定光标的位置
    可以用作断点续传

    3 f.flush() #将缓存中的内容直接刷新到内存中

    with语句:

    1 with open("骗自己",'r',encoding="utf8") as f:
    2     print(f.readlines())
    3 
    4 
    5 #with语句同时操作
    6 with open("骗自己",'r',encoding="utf8") as f_read , open("AccountRecord",'a',encoding="utf8") as f_write:
    7     for line in f_read:
    8         f_write.write(line)
  • 相关阅读:
    字集码(字符编码)
    图片轮播(可实现手动与自动的切换)
    Eclipse常用快捷键
    Java并发编程:Callable、Future和FutureTask
    Java并发之CountDownLatch、CyclicBarrier和Semaphore
    java注解
    JVM加载class原理
    阿里中间件技术及双十一实践--软负载——分布式系统的引路人
    阿里中间件技术及双十一实践--中间件总体介绍
    Java的LockSupport.park()实现分析
  • 原文地址:https://www.cnblogs.com/Adairye/p/8927830.html
Copyright © 2011-2022 走看看