zoukankan      html  css  js  c++  java
  • python文件处理复习

    1.创建文件

    >>> file('test.txt','w')   -->在当前路径下创建文件

    test.txt是文件名

    w是打开文件的方式,r是读,w是写,a是追加,如果当前路径没有这个文件,用w可以直接创建

    2.往文件中写内容

    >>> file('test.txt','w').write('hello')  #如果是以'w'模式打开的,那么会重新写这个test.txt文件,原来的内容不再有。

    正确的写法:

    >>> f = file('test.txt','w')

    >>> f.write('hello ')    # 是换行

    >>> f.write('hello2')  #现在写的数据还在内存里边,没有写到硬盘上,此时查看文件是空的,即便原来有数据。

    >>> f.close() #把文件关掉就写到硬盘上了,只要是用w模式打开的写数据,就会覆盖掉以前的数据,产生一个新文件

    3.读文件

    如果是以w模式打开文件的,写完数据之后不想关闭文件,但是还想看到文件中的内容,用flush(),但是这样会报错,因为你用的是w模式打开的,所以没法读取,在这儿只是想引进flus()的使用方法

    不写打开文件模式,默认是以r来打开文件的

    >>> f = file('test.txt')
    >>> f.read()   #read()方法读取出来的是字符串,全部读取出来
    'hellohello '

    >>> f.readline()   #这个是读取文件一行的方法,在这儿为什么会是空的呢?因为在刚打开文件时,我们用f.read()读取了一次,相当于从内存中把这个字符串全部读取了出来,
    ''             #这时候指针就移到了字符串的后边,那同时也就没有了内容。

    可以通过这个来验证以上内容是否正确

    >>> f = file('test.txt')   #关闭文件后重新打开
    >>> f.tell()        #查看文件内容在内存指针的位置
    0             #结果是0,也就是没读取文件之前指针在最前边
    >>> f.readline()    #读取test.txt中的一行
    'hello '        #显示结果以字符串的形式出现
    >>> f.readline()
    'hello '        #test.txt总共写了两行hello
    >>> f.readline()    #在读取的时候就没有内容了,因为第三行没有内容,所以显示空
    ''
    >>> f.tell()      #再次调用查看指针在内存中的位置
    12
    >>>

    >>>f.seek(0)      #将指针移到0位置上,就可以重新读取内容了

    >>> f.tell()

    >>> f.seek(0)

    >>> f.readines() #以列表的方式读取出来,然后可以精确的拿出第几行,但是是读到内存中去的,占用内存空间,文件太大的时候会卡

    f.xreadlines() #是读取文件所有行的迭代器,如果一个G的日志文件,用这种方法比直接用readline()要快,因为readline()这个方法是先读到内存在打印,所以在打印1G的日志文件时会先等一会儿才会打印,而xreadline()会直接打印,内存中读一行然后扔一行

    4.遍历文件,两种遍历方法。

    #!/usr/bin/env python
    f = file('auth.log')
    for line in f.xreadlines():
        print line,

    #!/usr/bin/env python
    while True:
         line = f.readline()
         print line,
         if not line:break

    5.读取文件的模式

    如果文件以读写模式打开('r+'),那么写的时候是根据指针的位置来覆盖文件的,如果先读了一行,在往文件写的时候,会覆盖第二行的字符,而不是整个第二行!

    ('rb')可以处理二进制文件。如果windows过来的python文件,在linux上处理的时候用这个二进制文件处理。换平台的时候有时候会报错。

    6.文件内容替换,批量更改文件

    for line in fileinput.input("filepath",inplace=1):   #inplace=1 表示文件里的内容也同时改掉,如果是0的话,文件里的内容不会改掉,只是会打印出来。

        line = line.replace("oldtext","newtext")

        print line,   #必须print,没有print更改失败!

    backup=''  #修改文件之前做备份,只需要加个后缀即可

    #!/usr/bin/env python
    import fileinput
    for line in fileinput.input("test.txt",inplace=1,backup='.bak'):
    line = line.replace("hello2222","hello2")
    print line,

    备份的文件没有被修改,test.txt.bak就是备份的文件

    7.存放不同类型的文件到同一个文件中,以二进制存储

    #!/use/bin/env python

    improt struct

    n=1600    整数类型

    x=92.60   浮点型

    b=True    bool型

    s='!@中国'   字符串型

    sn=struct.pack('if?',n,x,b)   将不同类型转换成二进制方法

    f=open('erjinzhi.dat','wb')

    f.write(sn)

    f.write(s)

    f.close

  • 相关阅读:
    jQuery scroll事件
    jquery offset() 与position()方法的区别
    股票基本知识
    swfObject 使用说明
    javascript和swf在网页中交互的一些总结
    TCP 同步传输:客户端发送,服务器段接收
    读取Excel
    sql 执行顺序
    支付宝及时到帐接口
    Ajax中get提交和post提交的区别
  • 原文地址:https://www.cnblogs.com/i1991/p/6322406.html
Copyright © 2011-2022 走看看