Python随记(9)文件储存 OS模块 os.walk()

文件储存

  1. 打开文件: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)

  1. 文件的读取和定位,写入:
    读取方法有很多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']

发布了25 篇原创文章 · 获赞 0 · 访问量 306

猜你喜欢

转载自blog.csdn.net/weixin_46192930/article/details/104854733