• day10——Python file操作


    文件操作:
        工作中避免不了要和文件打文件,Python提供了标准输入和输出进行读写,
    f = codecs然后按Alt + Enter快捷键然后直接回车,直接导入模块
     

        a)读取文件内容:
    打开文件需要以下几步:
    1.open文件
    2.文件操作(如读或者写)
    3.关闭文件
     
        当前目录下有一个text.txt文件,文件内容如下:
    1111111
    aaaaaaa
    2222222
    bbbbbbbbbbbbbbbbbbb
    3333333333
    cccccccccccc
    dddddd
     
    直接打印内容文件:
    f = codecs.open('1.txt')
    print('@'*50)
    print(f.read())
    f.close()
     
     
    打印结果为:
     
     
    f = codecs.open('1.txt')
    print('@'*50)
    # print(f.read())
    # print('@'*50)
    text = f.read()
    # print('@'*50)
    print(type(text)) #字符串类型
    print('@'*50)
    result = text.replace('1','A') #把全部1换成大写的A
    print(result)
    print('@'*50)
    # print(f.read())
    # # print(dir(f))
    f.close()
     
     
    打印结果为:
     
     
    codecs类:这个模块主要是用来解决文件乱码的问题
     
    import codecs
     
    #open是打开这个文件的,ctrl+左键单击查看open中的w是干嘛用的,第一个是文件名字,mode有几个参数需要学习,默认就是rb,r是读,w是写,b是二进制读取,a是追加(读或写)
    f = codecs.open('2.txt','wb')
    f.write('Hello World! ')
    f.write('Hello YJB! ')
    f.write('You are very very coll ')
    f.write('we love this thearch ')
    f.write('###########**************** ')
    f.close()
     
    运行后会自动创建一个2.txt的文件,2.txt文件内容为:
    Hello World!
    Hello YJB!
    You are very very coll
    we love this thearch
    ###########****************
     
    改为:
    f = codecs.open('2.txt','ab')
    会在2.txt文件追加文件后面又写一遍
     
    Hello World!
    Hello YJB!
    You are very very coll
    we love this thearch
    ###########****************
    Hello World!
    Hello YJB!
    You are very very coll
    we love this thearch
    ###########****************
     
    f.write('You are very very coll ')也可以用字符串的形式:
    f.write(('You {0}  ').format('YJB'))
     
     
     
    f = open('2.txt','rb')
    print(dir(f))
    f.close()
     
    flush:flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
        一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。
     
     
    readlines:readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。
    如果碰到结束符 EOF 则返回空字符串。
    语法
    readlines(self, size=None)
    readlines([size]) -> list of strings, each a line from the file.
    return []
    参数
       无
     
    返回值
        返回列表,包含所有的行。
     
    f = open('2.txt','rb')
    # print(dir(f))
    print(f.readlines())
    f.close()
     
    打印结果为:
     
    f = open('2.txt','rb')
    print(f.readlines())
    print(f.readlines()[0])
    f.close()
     
    则直接报错:
        修改为:
    f = open('2.txt','rb')
    text_list = f.readlines()
    print(type(text_list))
    print(f.readlines())
    print(text_list[0])
    f.close()
     
    打印结果为:
        f已经执行完readlines后,下次再去读的时候,会从末尾开始读,所以读出来会是[]空字符串(空字典),所以打印print(f.readlines())这一行给注释掉,打印结果为:
        或者把光标位置重新定位到文件首行(Python支持光标调到第一行),
     
    readline:readline() 方法用于从文件读取整行,包括 " " 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 " " 字符。
    语法
    readline(self, size=None)
    pass
    参数
        size -- 从文件中读取的字节数。
    返回值
        返回从字符串中读取的字节。
    f = codecs.open('2.txt','rb')
    print(f.readline())
    f.close()
     
    打印结果为:
        如果再加上print(f.readline())则打印第二行,打印完第一行后光标变到第二行上,
     
        readlines是把所有每一行搞成一个元素,每个元素是一个字符串,
         readline  是把每一行做成一个字符串,
     
    next:next() 方法在文件使用迭代器时会使用到,在循环中,next()方法会在每次循环中调用,该方法返回文件的下一行,如果到达结尾(EOF),则触发 StopIteration
    语法
    next() 方法语法如下:
    fileObject.next();
    参数
    返回值
    返回文件下一行。
     
     
    write:write() 方法用于向文件中写入指定字符串。在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的。跟read()相对应的
    语法
    write(self, p_str)
    pass
    参数
        str -- 要写入文件的字符串。
    返回值
        该方法没有返回值。
    f = open('file3.txt','wb')
    f.write('HELLO WORLD  eighieg82483  eighw8u323u ')
    f.close()
     
     
    writelines:writelines() 方法用于向文件中写入一序列的字符串。这一序列字符串可以是由迭代对象产生的,如一个字符串列表。换行需要制定换行符 。
    语法
    writelines(self, sequence_of_strings)
    pass
    参数
        str -- 要写入文件的字符串序列。
    返回值
        该方法没有返回值。
     
    f.writelines(['aaa','bbb','cccccccccccccccc','dddd'])
     
     
    tell:tell() 方法返回文件的当前位置,即文件指针当前位置。
    tell() -> current file position, an integer (may be a long integer).
    pass
    语法
    fileObject.tell(offset[, whence])
    参数
        无
    返回值
        返回文件的当前位置。
     
    f = codecs.open('file3.txt','wb')
    print(dir(f))
    f.write('hello world! YJB')
    print(f.tell())
    f.writelines(['a ','b ','c '])
    f.close()
     
     
     
    seek:seek() 方法用于移动文件读取指针到指定位置。
    语法
    seek(self, offset, whence=None)
    fileObject.seek(offset[, whence])
    参数
    offset -- 开始的偏移量,也就是代表需要移动偏移的字节数
    whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
    返回值
        该函数没有返回值。
     
     
     
    打印文件名:
    print(f.name)
    关闭文件就返回True,没关闭文件则返回False
    print(f.closed)
     
     
    print(f.mode)
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    How the Data stored in computer?
    WinForm Vs WPF, COM/COM+ Vs .Net Assembly, COM/COM+ in ASP.Net, ... ...
    [Wonderful Explanation] ContextBound Objects and Remoting
    command
    compile the source code for specific device
    compile Android cm10.1
    Android Lint erroneously thinks min SDK version is 1
    wine Program File
    adb push framework.jar /system/framework
    Degrade ADT in Eclipse
  • 原文地址:https://www.cnblogs.com/yangjinbiao/p/7751793.html
Copyright © 2020-2023  润新知