Python入门到精通】(十八)Python的文件夹操作,创建文件夹复制文件等等

网友投稿 1213 2022-05-29

您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。

本文重点介绍PythonPython的文件夹操作,包括但是不限于创建文件夹复制文件。

干货满满,建议,需要用到时常看看。 小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~。

@[TOC]

前言

上篇文章介绍了Python的模块和包。这篇文章接着介绍另一个非常重要的点–Python的文件操作(IO)。文件操作是程序必不可少的一个知识点。不管是文件的上传下载;还是文件的读取写入都属于文件的操作。话不多说,直接进入主题

【Python从入门到精通】(十八)Python的文件夹操作,创建文件夹复制文件等等

绝对路径和相对路径

对于绝对路径和相对路径相信小伙伴们都不会陌生。绝对路径就是从根目录开始的路径,相对路径就是相对于当前工作目录所在的位置。

根目录:Window系统中以盘符(C: D:)作为根目录。而Max OS或者Linux系统中以/作为根目录。

当前工作目录:就是程序运行的工作目录,所有没有从根目录开始的文件名或者路径,都假定在当前工作目录下。在Python中可以通过os.getcwd()函数取得当前工作路径的字符串,可以通过os.chdir()改变它。

>>> import os >>> os.getcwd() 'D:\\学习记录\\PycharmProjects\\python_demo_1'

如上本地程序的当前工作目录是D:\\学习记录\\PycharmProjects\\python_demo_1,若文件file.txt位于该目录下,则file.txt的相对路径表示为.\file.txt (其中.\就表示当前目录)

文件路径的操作

Python中操作文件的模块是os模块。文件的所有操作方法由该模块提供。所以需要先引入该模块 import os

os.path.abspath(path) 获取当前目录的绝对路径

os.path.isabs(path) 如果参数path是一个绝对路径,就返回True,如果参数是一个相对路径,就返回False。

os.path.relpath(path,start) 将返回从start路径到path的相对路径的字符串,如果没有提供start,就使用当前工作目录作为开始目录。

os.path.dirname(path) 将返回一个字符串,它包含path参数中最后一个斜杠之前的所有内容。

os.path.basename(path) :将返回一个字符串,它包含path参数中最后一个斜杠之后的所有内容。

os.path.split(path): 可以通过获得包含路径的目录名称和基本名称的元组。

os.path.exists(path) 判断路径path是否存在,如果存在则返回True,否则返回False。

os.path.isdir(path): 判断路径path是否是文件夹,如果是的话则返回True,否则返回False。

9. os.path.isfile(path) 判断路径path是否是文件,如果是的话则返回True,否则返回False。

# 获取当前文件绝对路径 print(os.path.abspath(".")) #也可以这样写 basedir = os.path.abspath(os.path.dirname(__file__)) print(basedir) # 判断是否是绝对路径 path = 'D:\\学习记录\\PycharmProjects\\python_demo_1' print(os.path.isabs(path)) # 将返回从 start 路径到 path 的相对路径的字符串。 # 如果没有提供 start,就使用当前工作目录作为开始路径。 print(os.path.relpath("/python_demo_1", "D:\\学习记录\\PycharmProjects")) print(os.path.relpath('/demo')) # 获取当前类的路径 path = "D:\\学习记录\\PycharmProjects\\python_demo_1/demo/io/path_test.py" print(os.path.basename(path)) print(os.path.dirname(path)) print(os.path.split(path)) # 判断路径是否存在 print(os.path.exists("D:\\学习记录\\PycharmProjects\\python_demo_1")) print(os.path.isdir('D:\\学习记录\\PycharmProjects\\python_demo_1')) print(os.path.isfile('D:\\学习记录\\PycharmProjects\\python_demo_1/demo/io/path_test.py'))

运行结果是:

D:\学习记录\PycharmProjects\python_demo_1\demo\io True ..\..\python_demo_1 ..\..\..\..\..\demo path_test.py D:\学习记录\PycharmProjects\python_demo_1/demo/io ('D:\\学习记录\\PycharmProjects\\python_demo_1/demo/io', 'path_test.py') True True True

os.name 获取系统类型

os.environ 获取系统环境变量

os.path.join(path, *paths) 将多个目录拼接起来。

os.path.splitext(path)[1] 获取文件的后缀名,其中path必须是一个文件完整路径。

os.mkdir(path): 创建名为path的目录,需要注意的是该方法只能创建一层目录,不能递归创建目录,递归创建目录可以用os.makedirs(path)方法。

os.rmdir(path):移除名为path的目录,需要注意的是该方法同样只能移除一层目录,不能递归删除目录。递归删除目录使用os.removedirs(path)方法。

os.listdir(path):获取目录path下所有的子目录或者子文件。

os.remove(path): 删除文件

# 创建目录 os.mkdir("d:/test") # 删除一个目录 os.rmdir('d:/test') # 创建d:/test1/test2目录 os.makedirs("d:/test1/test2") # 在某个目录下创建一个新目录,首先把新目录的完整地址表示出来 print(os.path.join("D:/学习记录/PycharmProjects", 'demo')) # 获取文件扩展名 file_path = "D:/学习记录/PycharmProjects/python_demo_1/demo/io/os_test.py" print("后缀名是:" + os.path.splitext(file_path)[1]) # 列出当前目录下的所有目录 gen = [x for x in os.listdir('.') if os.path.isdir(x)] print(gen) # 列出当前目录下所有的.py文件,也只需一行代码: list = [x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1] == '.py'] print(list)

运行结果是:

D:/学习记录/PycharmProjects\demo 后缀名是:.py ['serializable', 'test_io', 'test_io1'] ['dir_test.py', 'io_demo.py', 'os_test.py', 'path_test.py', 'read_test.py', 'stringio_test.py']

列出当前目录已经当前目录的所有目录下后缀名是.py的所有文件。这里使用到了递归函数,通过splitext方法获取文件后缀名,通过listdir函数列出传入的filepath的所有子目录或者文件。

def gci(filepath): files = os.listdir(filepath) for fi in files: fi_d = os.path.join(filepath, fi) if os.path.isdir(fi_d): gci(fi_d) elif os.path.splitext(fi_d)[1] == '.py': print(fi_d)

shutil模块

除了os模块之外,还有一个重要的操作文件或者文件夹的模块shutil模块。该模块可以用来删除文件夹,复制文件等等。下面就简单的介绍一下其功能吧。

shutil.copytree(src, dst) 用来复制文件夹,将src目录下的内容复制到dst目录下。如果dst目录下存在了src下的内容,则方法会报错。

shutil.copyfile(src, dst) 用来复制文件,将src指定的文件复制给dst指定的文件

shutil.rmtree(path) 用于删除path目录

import shutil import os # 复制文件夹 src_os_path = "D:/学习记录/PycharmProjects/python_demo_1/demo/io" dst_os_path = "D:/test1/test2/dst_io" if not os.path.exists(dst_os_path): shutil.copytree(src_os_path, dst_os_path) # 文件复制 src_os_test_path = "D:/学习记录/PycharmProjects/python_demo_1/demo/io/os_test.py" dst_os_test_path = "D:/test1/test2/dst_os_test.py" if not os.path.exists(dst_os_test_path): shutil.copyfile(src_os_test_path, dst_os_test_path) path1 = "D:/test1/test4/test5" if not os.path.exists(path1): os.makedirs(path1) # 删除文件夹 shutil.rmtree(path1)

运行结果是:

总结

本文详细介绍了Python中操作文件各种方法,主要涉及绝对路径,相对路径等知识点。

我是码农飞哥,再次感谢您读完本文。

Python

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《零基础看得懂的C++入门教程 》——(8)搞定二维数组与循环嵌套
下一篇:5G+云+AI下,如何破除国内VR/AR的发展症结?
相关文章