《Office 2013快速入门指南》简体中文版下载(暂未上线)(office是什么意思)
1213
2022-05-29
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。
本文重点介绍PythonPython的文件夹操作,包括但是不限于创建文件夹复制文件。
干货满满,建议,需要用到时常看看。 小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~。
@[TOC]
前言
上篇文章介绍了Python的模块和包。这篇文章接着介绍另一个非常重要的点–Python的文件操作(IO)。文件操作是程序必不可少的一个知识点。不管是文件的上传下载;还是文件的读取写入都属于文件的操作。话不多说,直接进入主题
绝对路径和相对路径
对于绝对路径和相对路径相信小伙伴们都不会陌生。绝对路径就是从根目录开始的路径,相对路径就是相对于当前工作目录所在的位置。
根目录: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小时内删除侵权内容。