zoukankan      html  css  js  c++  java
  • python入门之排序,文件操作

    排序

      li.sort()  对li列表从小到大排序,直接更新li列表

      sorted(li)  返回一个li排序后的列表,并非直接对li作更新

      列表元素必须是同一种数据类型

    文件操作

      打开文件:

        f = open(文件名,模式,编码)

          以某种方式某种编码打开某文件,会返回一个对象(文件名最好写绝对路径,默认只读模式r)

          模式:  

    r     只读,默认。读取的是字节,默认以utf-8编码转换成字符串,所以取得的是字符串,也可以自己设置编码。有中文的话可能要设置utf-8
    w     只写,不可读。文件不存在则自动创建,文件存在则会自动把文件清空,只要以只写打开,就会清空文件。
    x     只写,不可读。文件不存在则自动创建,文件存在直接报错
    a     追加,不可读。文件不存在则自动创建,文件存在则追加
    
    rb    只读。读取的是字节,取得的数据也是字节。不用设置编码
    wb    只写。写入字节,写入的话,必须将写入的字符串转换为字节,然后再写入
    xb    同上
    ab    同上
    
    r+    读写。读文件read(),会有一个指针,第一次读,指针在第一行行首,读完之后指针会移到最后(读到哪儿,指针移到哪儿),每次读都是读的指针以后的数据,这时写入数据,指针依然往后排,这时读取的话,是空的。不管开始指针的位置在哪儿,只要写入,那么只能追加在最后,指针也会移到最后(r+的写是追加在末尾)
    w+    写读。打开文件时已先清空文件,然后再写,接着再读,读的是刚才写的数据,但是写了之后,指针跑到末尾了,所以在读之前需要调整指针的位置
    x+    写读。和w+差不多,只是如果文件存在,则会报错
    a+    写读。打开文件的同时,已经将指针移到最后了
    
    r+b   以二进制读写
    w+b
    x+b
    a+b

      

      指针操作:

        f.tell()  返回指针的位置,为0表示起始位置,返回的数字是按字节排的,指针在第多少个字节后就是返回值。返回3,表示在第一个汉字之后。

        f.seek(0)  将指针移到起始位置,也可以移动到其他位置,根据里面传的数字

      

      读取、关闭文件:

    data = f.read()    读取文件,默认全部读取,加参数数字,就读取多少个字符
    f.close()          如果不执行这条关闭,当代码写入数据后,程序还没执行完,再重新修改文件内容,那么其他程序来读取文件时就读的是后面修改后的内容,然后程序执行完后,再去读取文件,读取的是开始写入的内容(因为程序没终止,写入的内容还在内存里,当程序终止了就写入文件里了)
    f.flush()          刷新文件内部缓冲区。当写入数据时,是写在内存里的,在程序执行完后才写入文件里,而这个函数是将内存里的数据直接加载写到文件里,即使程序还在运行当中
    
    f.readline()       仅读取一行数据
    f.truncate()       截取指针前的数据,后面的都删掉
    
    for line in f:
        print(line)
                       一行一行的读取所有数据,这样避免文件太大,导致内存不足
    
    with open("filename","r") as f:
        f.read()
                       不用close,会自动close
    
    with open("file1") as f1,open("file2") as f2:
        pass
                       同时打开两个文件(这个功能在2.7及2.7以后版本才有)
    作用:拷贝一个很大很占内存的文件到另一个文件,一般都是把这个文件先放到内存里,然后再拷到另一个文件。用with同时打开两个文件,一个为源文件,以只读打开,另一个新文件,以只写打开,这样就可以一行一行的从源文件拷到新文件里
    拷贝过程:
    for line in f1:
        f2.write(line)
  • 相关阅读:
    人人都有数字替身的时代马上到来
    教你如何在linux下查看服务是否已经启动或者关闭
    提前了解2019年物联网发展的六大趋势
    本科理工男如何学习Linux
    linux常见命令ps的应用
    useradd 命令的常见用法
    简单聊聊Linux学习经历
    什么是公网IP、内网IP和NAT转换?
    远程获得的有趣的linux命令
    js练习题之查找数组中的位子
  • 原文地址:https://www.cnblogs.com/chy-op/p/9873656.html
Copyright © 2011-2022 走看看