数据价值-DataValues

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1286|回复: 0

[python] Python 文件夹及文件操作_python 文件夹

[复制链接]

1万

主题

1万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
39029
发表于 2017-2-20 13:10:45 | 显示全部楼层 |阅读模式
Python 文件夹及文件操作,[ol]
  • python判断路径或文件
  •   python路径名文件名分隔
  •   python工作目录及创建文件夹操作
  •   python删除文件夹文件
  •   python重命名文件夹文件
  •    python复制移动文件夹文件
    [/ol],
    python 创建文件夹、python 删除文件夹、 python 遍历文件夹,
    我们经常会与文件和目录打交道,对于这些操作,Python可以使用 os 及 shutill 模块,其中包含了很多操作文件和目录的函数。,
    os 可以执行简单的文件夹及文件操作,引入用  import os,可用  help(os)  或是  dir(os)  查看其用法。注意有些函数在os模块中,有的是在os.path模块中。,
    shutil 模块提供了大量的文件的高级操作,特别针对文件拷贝和删除。主要功能为目录和文件操作以及压缩操作。须引入 import shutil  ,具体 help。本文仅介绍移动、复制及删除。,
    可先在 D:\ 下创建文件夹 Python_os , 再在其下创建文件夹 os, 再在其下创建 test.txt;之后的示例会在该文件夹下操作,  判断路径或文件,
        os.path.isabs(…)      # 判断是否绝对路径

    os.path.exists(…)     # 判断是否真实存在
    os.path.isdir(…)       # 判断是否是个目录
    os.path.isfile(…)       # 判断是否是个文件,
    注意:   把两个路径合成一个时,不要直接拼字符串,而要通过 os.path.join(part1,part2) 函数,这样可以正确处理不同操作系统的路径分隔符。在Linux/Unix/Mac下,os.path.join()返回这样的字符串:    part1/part2,Try,      而Windows下会返回这样的字符串:  part1\part2,
    1 import os
    2 import shutil
    3
    4 file_dir = "D:\\Python_os\\os"                          # 注意 \\ ;windows 下是这么表示的;Linux 和 Mac 是 /
    5 file_name = "test.txt"
    6 file_abs = os.path.join(file_dir, file_name)            # os.path.join(...) 表示路径链接
    7
    8
    9 '''判断路径或文件'''
    10 print (1,os.path.isabs(file_dir))                       # 判断是否绝对路径
    11 print (2,os.path.isabs(file_name))                        
    12 print (3,os.path.isabs(file_abs))                        
    13 print (4,os.path.exists(file_abs))                      # 判断是否真实存在
    14 print (5,os.path.exists(os.path.join(file_dir,"xxx")))               
    15 print (6,os.path.isdir(file_dir))                       # 判断是否是个目录
    16 print (7,os.path.isdir(file_abs))        
    17 print (8,os.path.isfile(file_dir))                      # 判断是否是个文件
    18 print (9,os.path.isfile(file_abs))
    ,
    运行结果:,
    ,  路径名、文件名分隔,
        os.path.split(…)            # 分隔目录和文件名/文件夹名

    os.path.splitdrive(…)        # 分隔盘符(windows系统)
    os.path.splitext(…)           # 分隔文件和扩展名,
    运行结果:,
    这些合并、拆分路径的函数并不要求目录和文件要真实存在,它们只对字符串进行操作。,
    ,  工作目录及创建文件夹操作,
        os.getcwd()       # 获取当前工作目录

    os.chdir(…)       # 改变工作目录
    os.listdir(…)      # 列出目录下的文件
    os.mkdir(…)      # 创建单个目录        注意:创建多级用 os.makedirs()
    os.makedirs(…)    # 创建多级目录,
    1 import os
    2
    3 file_dir = "D:\\Python_os\\os"   
    4
    5 print (os.getcwd())                                # 获取当前工作目录
    6 os.chdir(file_dir)                                 # 改变工作目录
    7 print (os.getcwd())   
    8 print (os.listdir(file_dir))                       # 列出当前工作目录的所有文件 Python2 不支持 os.listdir()    Python3 会列出当前工作目录下的所有文件      
    9 os.mkdir("test_mkdir")                             # 在当前工作目录下创建文件夹 test_mkdir;注意不可存在相同文件夹,不然会报错
    10 os.makedirs("test_mkdir\\test1")
    11 os.chdir(".\\test_mkdir")                          # . 表示本级目录; .. 表示上级目录
    12 print (os.getcwd())   
    13 for i in range(2,6):                               # 使用for循环等,可方便的创建多个文件夹
    14     dir_name = "test" + str(i)
    15     os.mkdir(dir_name)
    ,
    在执行了上述实例代码后,os 文件夹中新建了空的 test_mkdir 文件夹,而 test_dir 文件夹下也新建出了 test1 至 test5 的空文件夹,
    ,
    创建文件夹可能会出错,原因具体有:(1) path 已存在时(不管是文件还是文件夹)  (2) 驱动器不存在  (3) 磁盘已满  (4) 磁盘是只读的或没有写权限,
    文件的创建及操作参见下一章节,  删除文件夹/文件,
        os.rmdir(…)            # 删除空文件夹                     注意:必须为空文件夹  如需删除文件夹及其下所有文件,需用 shutil

    os.remove(…)                   # 删除单一文件
    shutil.rmtree(…)               # 删除文件夹及其下所有文件,
    在上方示例的文件夹基础上,操作删除 test1 文件夹 (空文件夹可用 os.rmdir() ),删除 test_mkdir 及其下所有文件();示例代码如下,
    1 import os
    2 import shutil
    3
    4 file_dir = "D:\\Python_os\\os"                    
    5
    6 ''' 删除文件/文件夹 '''
    7 os.chdir(file_dir+"\\test_mkdir")                    
    8 print(os.getcwd())                                    # 确保当前工作目录
    9 print(os.listdir(os.getcwd()))                        # 查看当前文件夹下所有文件   
    10 os.rmdir("test1")                                     # 删除 test1 文件夹(空文件夹)
    11 print(os.listdir(os.getcwd()))   
    12 os.chdir("..\\")
    13 print(os.getcwd())                                    # 切换到上级目录
    14 print(os.listdir(os.getcwd()))
    15 shutil.rmtree("test_mkdir")                           # 删除 test_mkdir 及其下所有文件
    ,
    可见运行结果如下;产生异常的可能原因:  (1) 路径不存在 (2) 路径子目录中有文件或下级子目录(os.rmdir) (3) 没有操作权限或只读,
    ,
    只是删除单一文件,则用   os.remove(“test.txt”)   即可;产生异常的可能原因:  (1) 文件不存在   (2) 对该文件没有操作权限或只读。,
    ,  重命名文件夹/文件,
    可对某一文件或文件夹重命名   os.rename(oldfileName, newFilename),
    在os文件夹中新建文件夹 test,文件 test.txt,
    1 ''' 重命名文件夹/文件 '''
    2 os.chdir(file_dir)
    3 print(os.listdir(os.getcwd()))
    4 os.rename("test","test1")   
    5 os.rename("test.txt","test1.txt")                # 重命名,注意需要带扩展名
    6 print(os.listdir(os.getcwd()))
    ,
    可见运行结果如下;产生异常的可能原因:  (1) oldfilename 旧文件名不存在(文件须带扩展名)   (2)newFilename 新文件已经存在,
    ,
    注意:新文件的扩展名不能遗漏,理论上需要保持类型一致;但这也不失为改文件类型的一种方式(相当于直接改文件的扩展名),    复制、移动文件夹/文件,
    须使用 shutil 模块,引入 import shutil ,
        shutil.copyfile(“old”,”new”)       # 复制文件,都只能是文件

    shutil.copytree(“old”,”new”)     # 复制文件夹,都只能是目录,且new必须不存在
    shutil.copy(“old”,”new”)           # 复制文件/文件夹,复制 old 为 new(new是文件,若不存在,即新建),复制 old 为至 new 文件夹(文件夹已存在)
    shutil.move(“old”,”new”)          # 移动文件/文件夹至 new 文件夹中,
    我们现在 D:\ 下创建新文件夹 Python_shutil ,然后工作目录切到该目录,直接使用 Python 来操作吧,参考代码如下:,
    1 import os
    2 import shutil
    3
    4 os.chdir("D:\\")
    5 os.mkdir("Python_shutil")
    6 file_dir = "D:\\Python_shutil"
    7 os.chdir(file_dir)
    ,
    为演示复制、移动操作,我们在该文件夹下手动操作 新建文件夹 test_org、 test_copy 及 test_move; 新建文件 test.txt  test1.txt , 两者内容不同,
    Python 复制、移动的操作示例代码如下:,
    1 import os
    2 import shutil
    3
    4 file_dir = "D:\\Python_shutil"
    5 os.chdir(file_dir)
    6 shutil.copyfile("test_org.txt","test_copy.txt")        # copy test_org.txt 为 test_copy.txt 若存在,则覆盖
    7 shutil.copyfile("test_org.txt","test1.txt")            # 存在,覆盖
    8 shutil.copytree("test_org","test_copytree")            # copy test_org 为 test_copytree(不存在的新目录)
    9 shutil.copy("test_org.txt","test_copy1.txt")           # 同 copyfile
    10 shutil.copy("test_org.txt","test_copy")                # 将文件 copy 至 目标文件夹中(须存在)
    11 shutil.copy("test_org.txt","test_xxx")                 # 将文件 copy 至 目标文件(该文件可不存在,注意类型!)
    12 print os.listdir(os.getcwd())
    13 shutil.move("test_org.txt","test_move")                # 将文件 move 至 目标文件夹中
    14 shutil.move("test_org","test_move")                    # 将文件夹 move 至 目标文件夹中
    15 print os.listdir(os.getcwd())
    ,
    转载请注明:数据分析 » Python 文件夹及文件操作_python 文件夹
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|DataValues ( 赣ICP备16006919号 ) DataValues

    GMT+8, 2019-10-22 02:31 , Processed in 0.112830 second(s), 27 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表