Python - os 文件/目录操作
最近经常用到 os 操作文件/目录,感觉挺好使的,但是一直没有系统的梳理学习一下,
今天想借此机会整理一下工作中常用的方法,也算自己总结学习的一个积累吧。
直接上代码,注释明了
#-*-coding:utf-8-*- # Time:2017/9/27 23:18 # Author:YangYangJun import os #返回当前工作目录 currentpath = os.getcwd() print os.listdir(currentpath) # ['newFile', 'Pyos.py'] print currentpath # D:\WorkSpace\Python\Study\Selenium\PyOs #拼接目录或文件路径 newpath = os.path.join(currentpath,'newFile') fileNamePath = os.path.join(currentpath,'newFile.xls') print fileNamePath # D:\WorkSpace\Python\Study\Selenium\PyOs\newFile.xls print newpath # D:\WorkSpace\Python\Study\Selenium\PyOs\newFile print os.access(newpath,os.X_OK) # os.chdir(path) 改变当前工作目录 print os.chdir(newpath) #这个返回值为空 None print os.getcwd() # D:\WorkSpace\Python\Study\Selenium\PyOs\newFile print __file__ # D:/WorkSpace/Python/Study/Selenium/PyOs/Pyos.py print __name__ # __main__ # 过去当前文件的绝对完整path print os.path.realpath(__file__) # D:\WorkSpace\Python\PyStudy\Python\PyApi\PyRequests\RequestStudy\readConfig.py # 截取文件名获取绝对路径 print os.path.split(os.path.realpath(__file__)) #('D:\\WorkSpace\\Python\\PyStudy\\Python\\PyApi\\PyRequests\\RequestStudy', 'readConfig.py') # 获取绝对路径的第一个元素 proDir = os.path.split(os.path.realpath(__file__))[0] # D:\WorkSpace\Python\PyStudy\Python\PyApi\PyRequests\RequestStudy #print chnewpath print os.listdir(currentpath) # ['newFile', 'Pyos.py'] #返回path指定的文件夹包含的文件或文件夹的名字的列表。 # 在当前目录下创建新的目录注意是创建目录而不是文件 #os.mkdir("testFile") #os.mkdir("testFile.xls") #注意删除的是文件而不是路径 #删除路径为path的文件。如果path 是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory。 #os.remove('123') #os.removedirs("testFile") #删除该目录 #os.rename('testFile','fileTest') #os.rename() 方法用于命名文件或目录,从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError。 #os.rename(src, dst) #src -- 要修改的目录名 #dst -- 修改后的目录名 #os.renames() 方法用于递归重命名目录或文件。类似rename()。 #os.renames(old, new) #old -- 要重命名的目录 #new --文件或目录的新名字。甚至可以是包含在目录中的文件,或者完整的目录树。 print "当前目录为: %s" %os.getcwd() # 列出目录 print "目录为: %s"%os.listdir(os.getcwd()) # 重命名 "fileTest" os.renames("fileTest","fileTest1/fileTest2") print "重命名成功。" # 列出重命名的文件 "fileTest1" print "目录为: %s" %os.listdir(os.getcwd()) #os.rmdir() 方法用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则, 抛出OSError。 #os.rmdir(path) #path -- 要删除的目录路径 #该方法没有返回值
os.listdir(path):只能返回当前path路径下的文件和文件夹,不包含子目录中的内容。
currentPath = os.getcwd() print(os.listdir(currentPath)) # ['readConfig.py', 'pyExcelEmail.xlsx', 'abtest.xlsx', '__init__.py', 'SendEmail.py', 'config.ini', 'EMail.py', 'newtest']
os.walk(top, topdown=True, onerror=None, followlinks=False)
参数:
- top 是你所要遍历的目录的地址
- topdown 为真,则优先遍历top目录,否则优先遍历top的子目录 (默认为True)
- onerror 需要一个 callable 对象,当walk需要异常时,会调用
- followlinks 如果为真,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录 (默认为False)
os.walk 的返回值是一个生成器(generator),也就是说我们需要不断的遍历它,来获得所有的内容。
每次遍历的对象都是返回的是一个三元组(root,dirs,files)
- root 所指的是当前正在遍历的这个文件夹的本身的地址
- dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
- files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
如果topdown 参数为真,walk 会遍历top文件夹,与top文件夹中每一个子目录
for root, dirs, files in os.walk(currentPath): print(root) #当前目录路径 print(dirs) #当前路径下所有子目录 print(files) #当前路径下所有非目录子文件 for file in files: if os.path.splitext(file)[1] == '.xlsx' : print(file) ######## /Users/yyj/Desktop/Project/HelloBike/TimeCalc/PyEmailExcel ['newtest'] ['readConfig.py', 'pyExcelEmail.xlsx', 'abtest.xlsx', '__init__.py', 'SendEmail.py', 'config.ini', 'EMail.py'] pyExcelEmail.xlsx abtest.xlsx /Users/yyj/Desktop/Project/HelloBike/TimeCalc/PyEmailExcel/newtest [] ['__init__.py']
![](http://files.cnblogs.com/files/BlueSkyyj/zfbd.bmp)
您的资助是我最大的动力!
金额随意,欢迎来赏!
![](http://files.cnblogs.com/files/BlueSkyyj/wxzf.bmp)
您的资助是我最大的动力!
金额随意,欢迎来赏!
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的
因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Blue·Sky】!
【China-测试开发】技术交流群期待你的加入【 193056556 】
【欢迎扫码关注:日益】微信订阅号【 riyi18 】