疑问:如果我们要打开操作一个文件 是用相对路径好 还是绝对路径好?
python自带模块 os ,python lib下自带的单独的模块直接使用import引用更合适
os.mkdir() 方法 概述: os.mkdir() 方法用于以数字权限模式创建目录。默认的模式为 0777 (八进制)。 语法: mkdir()方法语法格式:os.mkdir(path[, mode]) 参数: path -- 要创建的目录 mode -- 要为目录设置的权限数字模式 返回值: 该方法没有返回值。 Python3 OS 文件/目录方法:https://www.runoob.com/python3/python3-os-file-methods.html
- #导入os模块
- import os
-
- os.mkdir('alise') #本级目录下新建
1.用/符号来代表路径的不同层级
2.必须确保上面的层级是存在的
- #导入os模块
- import os
-
- os.mkdir('alise/susan') #新建相对路径
- os.mkdir('D:\\T_PYTHON') #新建绝对路径
- import os
-
- os.mkdir('D:\t_paython')
转义字符,可以通过加 / 还有R r来让转义字符失效
- import os
-
- os.mkdir('D:\\t_paython')
- os.mkdir(r'D:\t_paython')
- os.mkdir(R'D:\t_paython')
os.rmdir() 方法 概述: os.rmdir() 方法用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则, 抛出OSError。 语法: rmdir()方法语法格式:os.rmdir(path) 参数: path -- 要删除的目录路径 返回值: 该方法没有返回值 Python3 OS 文件/目录方法:https://www.runoob.com/python3/python3-os-file-methods.html
os.remove() 方法 概述: os.remove() 方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError。 在Unix, Windows中有效 语法: remove()方法语法格式:os.remove(path) 参数: path -- 要移除的文件路径 返回值: 该方法没有返回值
不推荐大家一次删除
- import os
- os.rmdir('alise') #删除存在文件夹的文件夹,报错OSError: [WinError 145] 目录不是空的。: 'alise'
-
- os.rmdir('alise/susan') #删除文件夹 也是一级一级的删除
第一种,使用递归方法:
- import os
-
- def rmdir(dir):
- #判断是否是文件夹,如果是,递归调用rmdir()函数
- if(os.path.isdir(dir)):
- #遍历地址下的所有文件及文件夹
- for file in os.listdir(dir):
- #进入下一个文件夹中进行删除
- rmdir(os.path.join(dir,file))
- #如果是空文件夹,直接删除
- if (os.path.exists(dir)):
- os.rmdir(dir)
- print(dir,"文件夹删除成功")
- #如果是文件,直接删除
- else:
- if(os.path.exists(dir)):
- os.remove(dir)
- print(dir,"文件删除成功")
- #调用定义函数
- rmdir("文件夹地址")
第二种,使用python自带函数
- import shutil
- shutil.rmtree("文件夹地址")
1.获取当前工作目录,具体到最后一级目录
os.getcwd() 方法 概述: os.getcwd() 方法用于返回(获取)当前工作目录。 语法: getcwd()方法语法格式:os.getcwd() 参数: 无 返回值: 返回当前进程的工作目录。
getcwd ->Return a unicode string representing the current working directory . 返回当前文件的工作"目录"
- import os
-
- path=os.getcwd()
- print('当前路径为:{0}'.format(path))
2.获取当前文件所在的绝对路径,具体到模块名
os.path:获取路径; realpath = abspath 绝对路径 ,“__file__”python中的静态变量,表示当前文件它本身(正在编辑的,代码正在运行的文件)
- import os
-
- path_2=os.path.realpath(__file__)
- print('2当前文件的绝对路径是:{0}'.format(path_2))
- 导入os模块
- import os
-
- #“os.getcwd()”获取当前工作目录路径,用"+"拼接的"\python01"表示在当前路径下新建一个叫“python01”的文件夹,但是拼接符号后面不能是单纯的字符串,需要加“\”等符号
- new_path_1=os.getcwd()+"\python01"
- #可以不打印出路径,打印出的是新建文件夹的路径
- print(new_path_1)
- #新建文件夹
- os.mkdir(new_path_1)
"join"拼接、连接、组合的意思,def join(path, *paths):有两个参数path是要拼接的路径,属于位置参数;*paths是拼接的子路径,其属于不定长类型的数据
实例:
- #导入os模块
- import os
-
- #“os.getcwd()”获取当前路径,"python666"表示要在当前路径下拼接一个叫“python666”的文件夹,不需要在文件夹名称前加“/”等符号
- new_path_2=os.path.join(os.getcwd(),"python666")
- #打印出新建文件夹的路径
- print(new_path_2)
- #新建文件夹
- os.mkdir(new_path_2)
1.跨级新建目录时,要确保最后一级目录前面的目录都是存在的
- 导入os模块
- import os
-
- new_path_2=os.path.join(os.getcwd(),"python666","sub_1")
- #打印出新建文件夹的路径
- print(new_path_2)
- #新建文件夹
- os.mkdir(new_path_2)
2.路径之间可以不分开写,用\等符号表示路径之间的层级,sub_2是python666的子路径
- 导入os模块
- import os
-
- new_path_2=os.path.join(os.getcwd(),"python666\sub_2")
- #打印出新建文件夹的路径
- print(new_path_2)
- #新建文件夹
- os.mkdir(new_path_2)
1.‘isfile’判断是否是文件,返回值:布尔值
- import os
-
- print(os.path.isfile(__file__))
- print(os.path.isfile(os.getcwd()))
2.'isdir'判断是否是目录,返回值:布尔值
- import os
-
- print(os.path.isdir(os.getcwd()))
- print(os.path.isdir(__file__))
用exists()判断是否存在文件,返回值:布尔值
- import os.path
-
- print(os.path.exists("F:\python11\class_11\class_if01.py"))
- print(os.path.exists('007_list.py'))
3.罗列出当前路径的所有文件和目录
- import os
-
- print(os.listdir(os.getcwd()))
os.listdir() 方法 概述 os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。 它不包括 . 和 .. 即使它在文件夹中。 只支持在 Unix, Windows 下使用。 语法 listdir()方法语法格式:os.listdir(path) 参数 path -- 需要列出的目录路径 返回值 返回指定路径下的文件和文件夹列表。
给定一个路径,请打印出所有的路径(直到这个路径下没有目录为止) 思路:递归函数 相当于打印所有路径出来 方法一:
- #导入os模块
- import os
-
- path_list = []
- def get_all(path):
- '''path =r'D:\WorkSpace\pythonProject\ji_chu
- 列出指定路径下的所有目录和文件'''
- paths = os.listdir(path)
- #遍历class_11下的所有路径
- for i in paths:
- com_path = os.path.join(path,i)
- # print(com_path)
- #判断是否是目录
- if os.path.isdir(com_path):
- get_all(com_path) # 如果该路径是目录,则调用自身方法
- elif os.path.isfile(com_path):
- path_list.append(com_path) # 如果该路径是文件,则追加到path_list中
- # print(com_path) 打印所有文件的绝对路径
- print(com_path) # 打印所有文件和目录的绝对路径
- print("D:\WorkSpace\pythonProject\ji_chu包括如下文件:")
- # 调用函数,指定路径
- get_all(path=r'D:\WorkSpace\pythonProject\ji_chu')
方法二:
- import os
-
- def get_full_path(current_working_directory):
- for path in os.listdir(current_working_directory):
- if os.path.isdir(os.path.join(current_working_directory, path)):
- new_current_working_directory = os.path.join(current_working_directory, path)
- print("{}还需要做进一步处理".format(path))
- get_full_path(new_current_working_directory)
- else:
- print("这个是已经穷尽的路径:", os.path.join(current_working_directory, path))
-
- get_full_path(os.getcwd())