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())

      

时间: 2024-10-16 14:19:40

Python 文件夹及文件操作的相关文章

python文件夹遍历,文件操作,获取文件修改创建时间

在Python中,文件操作主要来自os模块,主要方法如下: os.listdir(dirname):列出dirname下的目录和文件os.getcwd():获得当前工作目录os.curdir:返回当前目录('.')os.chdir(dirname):改变工作目录到dirname os.path.isdir(name):判断name是不是一个目录,name不是目录就返回falseos.path.isfile(name):判断name是不是一个文件,不存在name也返回falseos.path.ex

Python学习(九)IO 编程 —— 文件夹及文件操作

Python 文件夹及文件操作 我们经常会与文件和目录打交道,对于这些操作,python可以使用 os 及 shutill 模块,其中包含了很多操作文件和目录的函数.这边,仅介绍通常会用到的方法. os 可以操作简单的文件夹及文件操作,引入用  import os,可用  help(os)  或是  dir(os)  查看其用法.注意有些函数在os模块中,有的是在os.path模块中. shutil 模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作.须

Python文件夹与文件的操作 ZZ

最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模块, 导入的方法是: import os 一.取得当前目录 s = os.getcwd() # s 中保存的是当前目录(即文件夹) 比如运行abc.py,那么输入该命令就会返回abc所在的文件夹位置. 举个简单例子,我们将abc.py放入A文件夹.并且希望不管将A文件夹放在硬盘的哪个位置,都可以在A

Python文件夹与文件的操作

最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模块, 导入的方法是: import os 一.取得当前目录 s = os.getcwd() # s 中保存的是当前目录(即文件夹) 比如运行abc.py,那么输入该命令就会返回abc所在的文件夹位置. 举个简单例子,我们将abc.py放入A文件夹.并且希望不管将A文件夹放在硬盘的哪个位置,都可以在A

Python对文件和文件夹的高级操作模块shutil

shutil模块提供了许多关于文件和文件夹的高级操作. 特别提供了支持文件复制和删除的功能. # 将文件对象fsrc的内容复制到文件类对象fdst.length(可选参数)是缓冲区大小 shutil.copyfileobj(fsrc,fdst,length) # 将文件名为src的的内容复制到名为dst的文件中 shutil.copyfile(src,dst) # 将权限从src复制到dst shutil.copymode(src,dst) #将权限位,上次访问时间,上次修改时间以及src中的标

文件及文件夹的常见操作

文件的重命名.删除 有些时候,需要对文件进行重命名.删除等一些操作,python的os模块中都有这么功能 <1>文件重命名 os模块中的rename()可以完成对文件的重命名操作 rename(需要修改的文件名, 新的文件名) import os os.rename("毕业论文.txt", "毕业论文-最终版.txt") <2>删除文件 os模块中的remove()可以完成对文件的删除操作 remove(待删除的文件名) import os

python 实现彻底删除文件夹和文件夹下的文件

python 中有很多内置库可以帮忙用来删除文件夹和文件,当面对要删除多个非空文件夹,并且目录层次大于3层以上时,仅使用一种内置方法是无法达到彻底删除文件夹和文件的效果的,比较low的方式是多次调用直到删除.但是,我们可以结合多个内置库函数,达到一次删除非空文件夹,不管其目录层次有多深. import os import shutil import traceback import globalvar def misc_init() # clean the test result folder

Python - 创建目录,切换目录,创建文件,复制文件,移动文件 ,删除文件夹及文件

# -*- coding: utf-8 -*- """ Created on Mon Jan  9 00:35:43 2017 @author-Weixin: 953558077 """ import os import shutil import time ''' shutil模块的基础功能简介 copyfile( src, dst)      从源src复制到dst中去.当然前提是目标地址是具备可写权限.抛出的异常信息为IOException

Windows phone开发之文件夹与文件操作系列(一)文件夹与文件操作

Windows phone7中文件的存储模式是独立的,即独立存储空间(IsolatedStorage).对文件夹与文件操作,需要借助IsolatedStorageFile类. IsolatedStorageFile提供了对独立存储的空间获取,文件夹的删除.移动,文件的创建.删除等IO操作. 在Windows phone7中对文件的操作,都需要引入命名空间System.IO.IsolatedStorage和System.IO. 在System.IO.IsolatedStorage 命名空间下有以下