文件的存储
文件在计算机的多重目录下存储,每一个文件都有其存储路径可以视作文件在硬盘上的标识,每个文件对应的路径都是唯一的。
文件的目录名一般之间用/来进行分隔,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 <>导入
第三方库非常庞大,数量和种类远大于标准库