编码格式
常见的字符编码格式:
1、Python的解释器使用的是Unicode(内存)
2、.py文件在磁盘上使用UTF-8存储(外存)
文件的读写原理
文件的读写俗称‘IO操作’
操作原理
文件的读写操作
内置函数open()创建文件对象
语法规则:file=open(filename [,mode,encoding])
file指被创建的文件对象 filename是要打开或创建的文件名称 mode为打开方式默认为只读
encoding默认文本文件中字符的编写格式为GBK
file=open('text.txt','r',encoding='UTF-8')
print(file.readlines())
file.close()
常用的文件打开模式
文件的类型:按文件中数据的组织形式,文件分为以下两大类
1、文本文件:存储的是普通“字符”文本,默认为Unicode字符集,可以使用记事本程序打开
2、二进制文件:把数据内容用‘字节’进行存储,无法用记事本打开,必须使用专门的软件打开,举例:MP3音频文件,jpg图片.doc文档等
打开模式 | 描述 |
---|---|
r | 以只读模式打开文件,文件的指针将会放在文件的开头 |
w | 以只写模式打开文件,如果文件不存在则创建,如果文件存在,则覆盖原有内容,文件指针在文件的开头 |
a | 以追加模式打开文件,如果文件不存在则创建,文件指针在文件开头,如果文件存在,则在文件末尾追加内容,文件指针在原文件末尾 |
b | 以二进制方式打开文件,不能单独使用,需要与其他模式一起使用,rb,或者wb |
+ | 以读写方式打开文件,不能单独使用,需要与其他模式一起使用,a+ |
file=open('a.txt','w',encoding='UTF-8')
file.write('helloworld')
file.close()
src_file=open('logo.jpg','rb')
target_file=open('copylogo.jpg','wb')
target_file.write(src_file.read())
target_file.close()
src_file.close()
文件对象的常用方法
方法名 | 说明 |
---|---|
read([size]) | 从文件中读取size个字节或字符的内容返回。若省略[size],则读取到文件末尾,即一次读取文件所有内容 |
readline() | 从文本文件中读取一行内容 |
readlins() | 把文本文件中每一行都作为独立的字符串对象,并将这些对象放入列表返回 |
write(str) | 将字符串str内容写入文件 |
writelines(s_list) | 将字符串列表s_list写入文本文件,不添加换行符 |
seek(offset[,whence]) | 把文件指针移动到新的位置,offset表示相对于whence的位置 offset:为正往结束方向移动,为负往开始方向移动 whence不同的值代表不同的涵义: 0:从文件头开始计算(默认值) 1:从当前位置开始计算 2:从文件尾开始计算 |
tell() | 返回文件指针的当前位置 |
flush() | 把缓冲区的内容写入文件,但不关闭文件 |
close() | 把缓冲区的内容写入文件,同时关闭文件,释放文件对象相关资源 |
with语句(上下文管理器)
with语句可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正确的关闭,以此来达到释放资源的目的
with open('text.txt','r') as file:
print(file.read())
with open('logo.jpg','rb') as src_file:
with open('copycp.jpg','wb')as target:
target.write(src_file.read())
目录操作
os模块是python内置的与操作系统功能和文件系统相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同的操作系统上运行,得到的结果可能不一样
os模块与os.path模块用于对目录或文件进行操作
函数 | 说明 |
getcwd() | 返回当前的工作目录 |
listdir() | 返回指定路径下的文件和目录信息 |
mkdir(path[,mode]) | 创建目录 |
makedirs(path1/path2...[,mode]) | 创建多级目录 |
rmdir(path) | 删除目录 |
removedirs(path1/path2……) | 删除多级目录 |
chdir(path) | 将path设置为当前工shuo作目录 |
import os
print(os.getcwd())
lst=os.listdir('../pythonProject')
print(lst)
#os.mkdir('newdir')
#os.makedirs('A/B/C')
#os.rmdir('newdir')
#os.removedirs('A/B/C')
os.chdir('D:\\pythonProject')
函数 | 说明 |
---|---|
abspath() | 用于获取文件或目录的绝对路径 |
exists() | 用于判断文件或目录是否存在,如果存在返回True,否则返回False |
join(path,name) | 将目录与目录或者文件名拼接起来 |
splitext() | 分离文件名和扩展名 |
basename(path) | 从一个目录中提取文件名 |
dirname(path) | 从一个路径中提取文件路径,不包括文件名 |
isdir(path) | 用于判断是否为路径 |
#列出指定目录下的所有.py文件
import os
path=os.getcwd()
lst=os.listdir(path)
for filename in lst:
if filename.endswith('.py'):
print(filename)