我们在文件处理的时候,除了上一篇说的基本的读写和指针在文件中移动之外,还有4个非常重要也很常用的场景:
下面这张图是总览 这部分知识其实非常重要,我们在写代码的时候要经常打交道,内容多而杂.Python中对文件系统的访问大多是通过os模块实现的,我们需要熟练掌握,.我把这些常见的用法和技巧总结归纳了一下,快来看看吧: 下面的所有操作都要import os 1.文件的处理 假设在当前的目录下有一个'abc.txt' 1)重命名文件 os.rename('abc.txt','a123.txt') >>'abc.txt'变成了'a123.txt' 2)删除文件 os.remove('a123.txt') 但是在删除之前,最好先判断'a123.txt'是否存在 改成: if os.path.exists('a123.txt'): os.remove('a123.txt')
假设有一个文件路径 path='/users/Python/Data/info.txt' 1)获得路径 print os.path.dirname(path) >>/users/Python/Data 2)分割文件名 print os.path.basename(path) >>info.txt 3)分割文件的后缀 print os.path.split(path) >>('/users/Python/Data', 'info.txt')
比如创建一个test01,test02目录 1)创建目录 os.mkdir('test01')#在当前目录下创建一个test01目录 os.mkdir('test02')#在当前目录下创建一个test02目录 改进,最好在创建之间先判断目录是否存在,否则会报错 if not os.path.exists('test01'): os.mkdir('test01') if not os.path.exists('test02'): os.mkdir('test02') 2)列出当前目录下的所有文件和文件夹 |---test01-------- |---test02-------- |---demo_file.py-- print os.listdir('.') >>['demo_file.py', 'test01', 'test02'] 有同学说我不知道这个test01是文件夹还是文件啊,不急有高招,接着看 print list(os.walk('.'))#walk()会生成当前目录下的所有文件和目录 >>[('.', ['test01', 'test02'], ['demo_file.py']), ('.\\test01', [], []), ('.\\test02', [], [])] 3)返回当前的目录 print os.getcwd() >>C:\Users\xx\Python\Test 4)删除目录 os.rmdir('test02') >>就把test02文件夹删除了 有同学问若test02里面还有其他文件和目录,怎么办,如何一键删除.可以用一个高级模块shutil来处理,详细的我后面会有文章介绍文件的高级处理技巧 4.判断是否为文件或者目录 在文件处理的时候,特别是递归处理目录下的多个文件或者嵌套子目录的时候,要先判断一下这个是文件还是目录. python有非常简单的方法,假设我们有一个这样的目录结构: |---test01-------- |---test02-------- |---demo_file.py-- 1)判断是否为文件 print os.path.isfile('test01') >>False print os.path.isfile('demo_file.py') >>True 2)判断是否为目录 print os.path.isdir('test01') >>True 3)判断是否为符号link 在linux里面会有一些link的文件 print os.path.islink('link_file') 4)判断文件或者目录是否存在 有的时候我们不在乎这个到底是文件还是路径,我们只关心它是否存在,有个简便的方法: print os.path.exists('demo_file.py') >>True print os.path.exists('test01') >>True |
|
来自: Four兄 > 《Python办公》