python 中的File

File

  • 编码格式介绍
  • 文件的读写原理
  • 文件的读写操作
  • 文件对象常用的方法
  • with 语句(上下文管理器)
  • 目录操作

编码格式的介绍

常见的字符编码格式

1.python的解释器使用的是Unicode(内存)
2.py文件在磁盘上使用UTF-8存储(外存)

在这里插入图片描述### 为什么要知道编码格式???
在我们操作文本文件的时候,经常会出现中文,这个时候,我们经常会碰到中文乱码的问题,那么怎么去解决这个问题?对于计算机而言,它并不能识别我们的中文,因而在转换时,如果文件中存在中文格式,就容易出现乱码,各种各样的编码格式,对于计算机而言就像时一本本字典,这就好比我们的汉语拼音字典,遇到不会写的字时我们可以使用;英语字典,可以查询不认识的单词的中文意思。同样,对于计算机而言,不同的编码格式,也是不同类型的字典,找到合适的编码格式,将文件进行转换,就不会出现乱码的问题了,所以我们很有必要对一些常见的编码格式进行一定的了解。

文件的读写原理

1.文件的读写俗称“IO操作”
IO分别指 input 和 output ,意思是 输入和输出

2.文件读写操作的流程

Python操作文件
打开或新建文件
读写文件
关闭资源

读: 针对于内存而言,将数据从外面到达内存中叫做读,read

写:针对于内存而言,将数据从内存送出去叫做写,write

3.操作原理
在这里插入图片描述

文件的读写操作

使用内置函数 open() 创建文件对象

在这里插入图片描述
被创建的文件对象 = open(要打开或创建的文件名称,打开模式(默认为只读),文件中字符的编写格式(默认文本文件中字符的编写格式为gbk))
例如
读取文件 a.txt中的内容

file = open('a.txt','r')
print(file.readlines())
file.close()

常用的文件打开模式

文件的类型

按文件中数据的组织形式,文件分为以下两类
1.文本文件:存储的时普通“字符”文本,默认为 unicode 字符集,可以使用记事本程序打开
2.二进制文件:把数据内容用“字节”进行存储,无法用记事本打开,必须使用专用的软件打开。举例:MP3音频文件、jpg图片、doc文档等

打开模式描述
r以只读模式打开文件,文件的指针系那个会放在文件的开头
w以只写模式打开文件,如果文件不存在则创建,如果存在,则覆盖原有内容,文件指针在文件的开头
a以追加模式打开文件,如果文件不存在则创建,如果文件存在则在文件末尾追加内容,文件指针在原文末尾
b以二进制方式打开文件,不能单独使用,需要于共它模式一起使用,rb或wb
+以读写方式打开文件,不能单独使用,需要与其他模式一起使用,a+

文件对象的一些常用方法

在这里插入图片描述
1.read(size)
从文件中读取size个字节或字符的内容返回,默认读取文件的所有内容

file = open('a.txt','r')
print(file.read())

2.readline()
从文本文件中读取一行内容

3.readlines()
把文本中的每一行都作为独立的字符串对象,并将这些对象放入列表返回

4.write(str)
将字符串str写入文件

file = open('a.txt','a')
file.write('hello')
file.close()

5.writelines(s_list)
将字符串列表s_list写入文本文件,不添加换行符

file = open('a.txt','a')
list = ['java','python']
file.writelines(list)
file.close()

6.seek(offset,whence)
把文件的指针移到新的位置,offset不是相对于whence的位置:
offset: 为正往结束的分享移动,为负往开始方向移动
whence:不同的值代表不同的含义
0:从文件头开始计算(默认值)
1:从当前位置开始计算
2:从文件末尾开始计算

file = open('a.txt','r')
file.seek(2)
print(file.read())
file.close()

7.tell()
返回文件指针的当前位置(位置从0开始计算

8.flush()
把缓冲区的内容写入文件,但是不过比文件

9.close()
把缓冲区的内容写入文件,同时关闭文件,释放文件对象的相关资源

with语句(上下文管理器)

with语句可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正确的关闭,以此来达到释放资源的目的

在这里插入图片描述

目录操作

os模块是python内置的与操作系统功能和文件系统相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同的这种心态上运行,得到的结果可能不一样

os模块与os.path模块用于对目录或文件进行操作

import os
# 打开记事本
os.system('notepad.exe')
# 打开计算器
os.system('calc.exe')
# 直接调用可执行文件
# 例如QQ
os.startfile('C:\\Program Files (x86)\\Tencent\\QQ\\Bin\\qq.exe')

os模块操作目录的相关函数

函数说明
getcwd()返回当前的工作目录
listdir(path)返回指定路径下的文件和目录信息
mkdir(path,mode)创建目录
makedirs(path1/path2…)创建多级目录
rmdir(path)删除目录
removedirs(path1/path2…)删除多级目录
chdir(path)将path设置为当前工作目录

os.path模块操作目录相关函数

函数说明
abspath(path)用于获取文件或目录的绝对路径
exists(path)用于判断文件或目录是否存在
join(path,name)将目录或者文件名拼接起来
split(path)分离路径和文件名
splitext(path)分离文件名 和拓展名
basename(path)从一个目录中提取文件名
dirname(path)从一个路径中提取文件路径,不包括文件名
isdir(path)用于判断是否为路径

练习
获取如上的test目录下的所有.py的文件名

在这里插入图片描述

	import os
	path = 'E:\\MyStudy-Notes\\python\\test'
	list=os.listdir(path)
	for filename in list:
	    if filename.endswith('.py'):
	        print(filename)

在这里插入图片描述

进阶
在这里插入图片描述import os

import os

path = 'E:\\MyStudy-Notes\\python\\test'
list = os.walk(path)
for dirpath, dirname, filename in list:
    for dir in dirname:
        os.path.join(dirpath, dir)
    for file in filename:
        os.path.join(dirpath, file)
        if os.path.join(dirpath, file).endswith('.py'):
            print(file)

在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值