Python语言基础17:文件读取与写入

Python语言基础17:文件读取与写入 学习笔记

文件简单读取

# 调用open() 来打开一个文件,可以将文件分成两种类型
# 一种是纯文本文件(使用utf-8等编码编写的文本文件)
# 一种是二进制文件(图片,mp3、ppt等)
# open() 打开文件,默认是文本文件的形式打开,open() 默认的编码是None
#   因此处理文本时,必须指定文件的编码


file_name = 'hello\demo'

try:
    with open(file_name) as file_obj:
        content = file_obj.read()
        print(content)

except FileNotFoundError:
    print('{file_name} 这个文件不存在')

读取大文件

# 如果直接调用read() ,会将全部内容读取出来,
#   当读取较大的文件,会一次性将全部内容加载到内存中,容易导致内存溢出
#   因此对于大文件,不直接使用read()
# read() 可以接收一个size参数,该参数用来指定每次读取的字符数量
#   默认值是-1,读取所有字符
#   可以为size指定一个值,这样read() 会读取指定数量的字符
#       每一次读取都是从上次读取到位置开始读取的
#       如果字符的数量小于size ,则读取剩余所有的
#       如果已经读取到了文件的最后了,则会返回‘空字符串’

file_name = 'hello\demo'

try:
    with open(file_name,encoding='utf-8') as file_obj:
        # 定义一个变量,来指定每次读取的大小
        chunk = 3
        # 创建一个循环来读取文件的内容
        while True:
            # 读取chunk 大小的内容
            content = file_obj.read(chunk)

            # 检查是否读取到了内容
            if not content:
                # 内容读取完毕,退出循环
                break
            # 输出内容
            #print(content)
            file_content += content
except FileNotFoundError:
    print(file_name,'文件不存在')

print(file_content)

readline() 读取每一行

# readline():每次读取一行内容
# readlines() 该方法用于一行一行读取内容,并一次性将读取到的内容封装到一个列表中返回

import pprint

file_name = 'hello\demo'

with open(file_name,encoding='utf-8') as file_obj:

    # print(file_obj.readline())
    # print(file_obj.readline())

    # r = file_obj.readlines()
    # pprint.pprint(r[1])

    for f in file_obj:
        print(f)

文件写入

# 文件写入
file_name = 'hello\writedemo'

# 使用open() 打开文件时,必须要指定打开文件所要做的操作(读、写、追加)
# 如果不指定操作类型,默认是读取文件,而读取文件时,是不能向文件进行写入的

# r 表示只读
# w 表示可写,假如文件不存在,则创建;存在,则写入并覆盖
# a 表示追加内容,假如文件不存在,则创建;存在,则追加写入
# x 用来新建文件,如果不存在,则创建;存在,则报错
# + 为操作符增加功能

# r+ :即可读可写,文件不存在,则报错
#
with open(file_name,'w' ,encoding='utf-8') as file_obj:
    # 如果操作的是一个文本文件,则write() 需要传递一个字符串作为参数
    # 该方法可以分多次向文件中写入内容
    file_obj.write('hello write file\n')
    file_obj.write('welcome to python')
    r = file_obj.write(str(123)+'\n')
    print(r)

你可能感兴趣的:(Python)