打开文件
先假设我们在文件中出来现在已经有的.py文件还有一个叫text.txt的文件。
open
语法:open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) open中参数众多,但是我们常用的参数也就只有file,mode和encoding,接下来我们就来介绍一下这几个参数的作用
file
文件名或路径,这是open的必填参数,如果调用open最少你要说清你要打开那个文件。
路径小知识:在Windows系统中路径的分割使用的是\但是\在Python中是转义字符,所以我们可以使用\来讲\转义成普通\,或使用f’'格式化字符串,或使用/来分割路径,因为咋Linux系统中路径的分割就是使用/进行的。
open(text.txt)
mode
文件打开模式,先来介绍参数,参数具体用法会在操作文档的时候具体介绍
模式 |
功能 |
r |
只读模式(如果不填写,则默认就是此模式) |
w |
覆盖写入模式(如果存在和写入文件同名文件则覆盖,不存在则新建) |
x |
新建文件写入模式(如果存在和写入文件同名文件则报错,不存在则新建) |
a |
追加写入模式(如果存在和写入文件同名文件则在文件内容后追加,不存在则新建) |
b |
二进制读取模式,此模式可以读取除纯文本之外的其他文件 |
t |
文本模式(默认打开模式) |
+ |
扩展模式,可以扩展上述的模式,但必须要配合使用,比如:r+就扩展了只读模式,让这个模式既可读又可写 |
encoding
文件的编码格式,如果不填写就只能读取ASCII格式的文件,读取中文的文件就会报错,如果想要读取中文,一般常用UTF-8。
操作文件
读取文档
逐个读取read
语法:文件对象.read(size = -1)
-
read()默认值是-1,会自动读取到最后一个值
-
可以给read指定一个值,read每次读取都会从上次读取结束的位置开始。换行符也算一个字符。
-
如果read指定的读取数量大于实际数量,这会读取所有文件。如果没有内容,会返回一个‘’空串
逐行读取
语法:文件对象.readline() 每次读取一行内容。 语法:文件对象.readlines() 一行一行读取,并且会把每行内容自动封装到列表中。
文件读取位置
- tell()可以用来返回当前读取到的位置
- seek(参数1,参数2)可以修改当前读取的位置
- 参数1用于指定读取位置。
- 第二个参数为从哪开始指定位置
- 第二个参数接收:0从头开始计数(默认),1从当前位置开始计数,2从最后位置开始计数。
- 第二个参数只能在b模式下改变。在b模式下seek参数一代表的为字节,在utf-8中一个中文字符等于三个字节
写入文档
write
语法:文件对象.write(写入内容) 当文档处于w、x、a等写入模式的情况下才能使用write,否则会报错 write写入内容时会将写入的字数作为返回值返回
data = open('text.txt', 'w', encoding='utf-8')
name = '我是寻觅'
data1 = data.write(name)
print(data1)
关闭文件
close
语法:文件对象.close 将使用完的文件及时关闭,能有利于提升程序性能。
with… as…
使用这个函数打开文件使用完后会自动关闭,让代码变得更简洁 语法:with open() as 变量:
with open('text.txt', 'w') as data:
name = 'My name xun_mi'
data.write(name)
实例
操作音乐文件
with open('三无MarBlue - 童话镇(Cover 暗杠).mp3', 'rb') as music:
r = 1024*100
data = music.read(r)
with open('裁剪出的童话镇.mp3', 'wb') as new:
new.write(data)
with open('三无MarBlue - 童话镇(Cover 暗杠).mp3', 'rb') as data:
while True:
r = data.read(1024*1000)
if r == b'':
break
with open('新裁剪出的童话镇.mp3', 'ab') as new:
new.write(r)
os模块
os模块是Python中一个内置的用来操作文件的模块 下面我们来介绍一些常用方法。
方法 |
功能 |
os.listdir(‘路径,默认文件所在路径’) |
读取指定路径目录结构并作为返回值返回 |
os.getcwd() |
读取当前文件所在目录并作为返回值返回 |
os.chdir ('路径‘’) |
用来改变文件当前所在路径 |
os.mkdir(‘目录名’) |
创建目录 |
os.rmdir(‘目录名’) |
删除目录(只能删除空目录,非空目录会报错) |
os.makedirs('目录名’) |
生成多层目录 |
os.removedirs('目录名’) |
删除多层空目录(只能删除空目录,非空目录会报错) |
os.rename('原目录名‘,'新目录名’) |
目录重命名 |
os.stat(‘目录名或文件名’) |
读取目录或文件信息 |
os.name |
判断当前系统信息,如果是Windows则返回nt,Linux则返回posix |
os.environ |
获取系统变量 |
os.system('命令语句’) |
运行shell命令 |
import os
data = os.listdir('.')
print(data)
data = os.getcwd()
print(data)
os.mkdir('我是os模块创建的目录')
os.chdir('./我是os模块创建的目录')
data = os.getcwd()
print(data)
os.rmdir('我是os模块创建的目录')
os.makedirs('我是os创建的多层目录\\第二层')
os.removedirs('我是os创建的多层目录')
os.rename('我是os模块创建的目录', '我是经过重命名的文件')
data1 = os.stat('我是os创建的多层目录')
data2 = os.stat('os模块.py')
print(data1, data2)
data = os.name
data = os.environ
os.system('chcp 65001')
os.system('dir')
|