chzhiyi / -KnowledgeShare

6 stars 1 forks source link

20190214 - Python对文件的基本操作 - jingchu #11

Open qingfengmingjian opened 5 years ago

qingfengmingjian commented 5 years ago

使用f=open('filename.txt','w')来处理文件

Python.py为python文件,被处理文件filename.txt 创建文件,或给文件写入内容

  • 步骤: 1实例化一个对文件进行操作的对象并打开文件(没有文件会创建文件) 2使用write()方法写入内容 3关闭文件
  • 代码示例
    f=open('filename.txt','w')  #实例化对象f,python.py和filename.txt在同一目录
    f=open('E:/file/filename.txt','w') #python.py和filename.txt在不同目录
    f.write('hello world!')
    f.close()

    使用with open() as f:语句来读取

    with open('filename.txt','r') as file_object: #实例化对象file_object
    contents=file_object.read() #读取文件内容并存储在变量中
    print(contents) #打印出文件内容

    对文件处理的基础方法

    打开文件:open() 读取文件:read() 写入内容:write() 关闭文件:close()

    open()函数

    主要使用文件名file、标识符mode(mode默认为r,表示读取;w表示覆盖写入;a表示后 续写入;rb主要是读图片、视频等二进制数据;r读普通文本如txt)

    源码精要:
    def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):
    pass

    read()、readline()、readlines() -- 对文件读取的方法

    调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了;所以,保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。 另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。 因此,要根据需要决定怎么调用。 如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便。

    for line in f.readlines():
    print(line.strip())  # 把末尾的'\n'删掉

    write()

    和读文件是一样的,唯一区别是调用open()函数时,传入标识符'w'或者'wb'表示写文本文件或写二进制文件:

    f = open('/Users/michael/test.txt', 'w')
    f.write('Hello, world!')
    f.close()

    可以反复调用write()来写入文件,但是务必要调用f.close()来关闭文件。 当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。 只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。 忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。 还是用with语句来得保险:使用with语句来帮助我们调用close()方法,代码简介且不易出错,以后都用with open语句