文件的存储

文件在计算机的多重目录下存储,每一个文件都有其存储路径可以视作文件在硬盘上的标识,每个文件对应的路径都是唯一的。
文件的目录名一般之间用/来进行分隔,widows支持/或者\来进行分隔,不过一般都使用/来进行分隔,因为\通常用作转义字符使用容易出现混淆。python中使用/来对目录进行分隔。如F:/as/python/test.txt

文件操作

一个完整的文件的操作步骤应该包含:1.打开文件 2.读写文件 3.关闭文件
使用open(‘路径’, ‘方式’)打开一个文件。打开方式:r表示read,按照读方式打开:w表示write,按照写方式打开;a表示append,也是写方式打开,把内容写到原有文件的末尾。

open的返回值是一个文件对象(如同遥控器)

#使用open打开文件
f = open('F:/as/python/test.txt', 'r')
print(f)
print(type(f))

#使用close关闭文件
f.close()
print(f)




<_io.TextIOWrapper name='F:/as/python/test.txt' mode='r' encoding='cp936'>
<class '_io.TextIOWrapper'>
<_io.TextIOWrapper name='F:/as/python/test.txt' mode='r' encoding='cp936'>

write写文件

#使用write写文件
f = open('F:/as/python/test.txt', 'w')      #直接写,先清空文件原有内容,再写入新的
f.write('hello\n')                          #\n 转义字符  换行符
f.close()

f = open('F:/as/python/test.txt', 'a')      #追加写,写入原有内容的后面
f.write(' word')
f.close()

#如果文件已经关闭,意味着系统中和此文件相关的内存资源已经释放,强行去写就会出现异常

文件打开完后必须关闭,打开时会占用一定的系统资源,不使用的的时候资源就应该及时释放。系统资源有限,所以一个程序能打开的文件个数也是有限的。python中有一个重要的机制,垃圾回收机制(GC),自动把不使用的变量,给进行释放。但是不能完全依赖这个机制,还是要尽量手动释放,尽量避免出现错误。

read读文件

#读文件  使用read可指定读几个字符
f = open('F:/as/python/test.txt', 'r', encoding='utf8')
result = f.read(2)
print(result)
f.close()
#更常见的需求,按行读取
#最简单使用for循环
f = open('F:/as/python/test.txt', 'r', encoding='utf8')
for line in f:
    print(f'line = {line}', end='')   #每打印一次在末尾加一个空字符串,不写的话默认是加的换行
f.close()
print('\n')
#readlines直接读取整个文件按行组织到一个列表中
f = open('F:/as/python/test.txt', 'r', encoding='utf8')
lines = f.readlines()
print(lines)
f.close()


he
line = hello
line =  word

['hello\n', ' word']

读中文时要考虑文件编码,常用的编码格式有两种:GBK编码和UTF8编码,其中UTF8编码格式使用的更加广泛
open函数的参数可以设置编码格式f = open(‘F:/as/python/test.txt’, ‘r’, encoding=‘utf8’) 用encoding来设置。

使用上下文管理器可以避免文件不能关闭的问题

#可能会导致文件关闭不了
def func():
    open('F:/as/python/test.txt', 'r', encoding='utf8')
    if a:
        return
    if b:
        return
    f.close()
    
#上下文管理器,防止文件打开忘了关闭
def func():
    with open('F:/as/python/test.txt', 'r', encoding='utf8') as f
        if a:
            return
        if b:
            return

python的库

分为官方标准库和第三方库
官方标准库只需要用import <>导入
第三方库非常庞大,数量和种类远大于标准库