文件储存
- 打开文件:open()函数打开文件并返回文件对象。
open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)
open()有很多参数,常用的就是前两个。file 文件路径 mode 打开模式 buffering: 设置缓冲,encoding: 一般使用utf8,errors: 报错级别,newline: 区分换行符,closefd: 传入的file参数类型。
若打开的文件不存在就会自动创建一个。
打开模式 | 执行操作 |
---|---|
‘r’ | 以只读方式打开文件(默认) |
‘w’ | 以写入模式打开,会覆盖已存在的文件 |
‘x’ | 也是以写入模式打开,如果文件已经存在,使用此模式会引发异常 |
‘a’ | 以写入模式打开,如果文件存在,在末尾继续写入 |
‘b’ | 以二进制形式打开文件 |
‘t’ | 以文本形式打开{默认} |
‘+’ | 可读写模式(可添加到其他模式中应用) |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。
文件对象方法 | 执行操作 |
---|---|
close() | 关闭文件 |
read(size=-1) | 从文件中读取size个字符,从指针开始数的,默认是读取所有然后返回字符串 |
readline()/readlines() | 从文件中读取一整行字符串/全读出来 |
write(str) | 将字符串str写入文件(在指针位置添加)并返回写入字符串的长度。 |
writeline(seq) | 向文件写入字符串序列seq,seq是一个返回字符串的可迭代对象。 |
seek(offest,from | 在文件中移动指针,从from(0代表起始,1代表当前位置,2末尾位置) 偏移offest个字节 |
tell() | 返回当前文件中指针的位置 |
write() 在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的。如果文件打开模式带 b,那写入文件内容时,str (参数)要用 encode 方法转为 bytes 形式,否则报错:TypeError: a bytes-like object is required, not ‘str’。
writeline() 换行需要制定换行符 \n。seq =[ 'hahaha\n','bibibi'] f.writeline(seq)
- 文件的读取和定位,写入:
读取方法有很多read() readline() 也可以list(文件)或直接迭代,
f..seek(0,0) #将指针放到开头 for each_line in f: print(each_line)
注:中文字符占两个字节的。要写入文件的话要确保是以‘w’,‘a’ 模式打开。要想补充内容用’a’,‘w’会覆盖原来的文件。
def file_write(file_name):
f = open(file_name, 'w')
print('请输入内容【单独输入\'退出\'保存退出】:')
while True:
write = input()
if write != '退出':
f.write('%s\n' % write)
else:
break
f.close()
file_name = input('请输入文件名:')
file_write(file_name)
创建文件输入内容并保存的小程序。。。
文件系统(OS模块)
函数 | 食用方法 |
---|---|
getcwd(_ | 返回当前工作目录 |
chdir(path) | 改变工作目录(path是字符串) |
listdir(path=’,’) | 列举指定目录的文件名(‘ . '表示当前目录,‘ .. '上一层目录,返回列表形式) |
mkdir(path) | 创建单层目录如果目录已经存在就抛出异常 |
makedirs(path) | 递归创建多层目录,目录存在抛出异常 |
remove() | 删除文件 |
rmdir() | 删除单层目录,如果目录非空就报错 |
removedirs() | 递归删除目录,从子目录逐层删除,目录非空报错 |
rename(old,new) | 文件重命名 |
system(command) | 运行系统shell命令(os.system(;calc’)运行系统计算机) |
walk(top) | 历遍top参数指定的路径下所有子目录,并返回一个三元组(路径,【包含目录】,【包含文件】) |
以下是支持路径操作中的一些常用定义,支持所有平台
os.curdir | 指代当前目录‘ .’ |
---|---|
os.pardir | 上一级目录 |
os.sep | 输出操作系统特定的路径分割符(Win ‘\’,Linus ‘/’) |
os.linesep | 当前平台所用的行终止符Win ‘\r\n’,linus ‘\n’ |
os.name | 当前操作系统 |
os.walk()方法
os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。
os.walk() 方法是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。
os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])
-
top – 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。
root 所指的是当前正在遍历的这个文件夹的本身的地址
dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录) -
topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。
-
onerror – 可选, 需要一个 callable 对象,当 walk 需要异常时,会调用。
-
followlinks – 可选, 如果为 True,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录(默认关闭)。
import os
for root, dirs, files in os.walk("C:\\Users\\NERO\\Desktop\\最外层", topdown=False): #优先子目录
print(root,'\t' ,dirs,'\t' ,files)
>>
C:\Users\NERO\Desktop\最外层\1\12 [] ['3.txt']
C:\Users\NERO\Desktop\最外层\1 ['12'] ['3.txt']
C:\Users\NERO\Desktop\最外层 ['1'] ['3.txt']