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']

 

posted @ 2017-09-27 23:20  Blue·Sky  阅读(1153)  评论(0编辑  收藏  举报