018python-绝对路径、相对路径

 疑问:如果我们要打开操作一个文件 是用相对路径好 还是绝对路径好?

python自带模块 os ,python lib下自带的单独的模块直接使用import引用更合适 

 1.文件夹的新建和删除

 1.新建一个目录/新建一个文件夹

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. 跨级新建文件夹目录:

1.用/符号来代表路径的不同层级

2.必须确保上面的层级是存在的

#导入os模块
import os

os.mkdir('alise/susan')   #新建相对路径
os.mkdir('D:\\T_PYTHON')   #新建绝对路径

 2.路径什么情况下必须用双斜杠?

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

2.文件夹的删除

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 -- 要移除的文件路径
返回值:
该方法没有返回值

 1.删除文件夹 也是一级一级的删除

不推荐大家一次删除

import os
os.rmdir('alise')     #删除存在文件夹的文件夹,报错OSError: [WinError 145] 目录不是空的。: 'alise'

 os.rmdir('alise/susan')      #删除文件夹 也是一级一级的删除

 2.拓展:python可否强制删除?

第一种,使用递归方法:

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("文件夹地址")

2.获取路径

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

3.如何拼接路径

1.用“+”拼接的方式:

导入os模块
import os

#“os.getcwd()”获取当前工作目录路径,用"+"拼接的"\python01"表示在当前路径下新建一个叫“python01”的文件夹,但是拼接符号后面不能是单纯的字符串,需要加“\”等符号
new_path_1=os.getcwd()+"\python01"
#可以不打印出路径,打印出的是新建文件夹的路径
print(new_path_1)
#新建文件夹
os.mkdir(new_path_1)

 2.用jion

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

3. 跨级新建目录

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)

 4.其他用法

1. 如何判断是文件还是目录?

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

 2.如何判断文件/目录路径是否存在?

用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 -- 需要列出的目录路径 
返回值 
返回指定路径下的文件和文件夹列表。

 5.拓展题

给定一个路径,请打印出所有的路径(直到这个路径下没有目录为止) 思路:递归函数 相当于打印所有路径出来 方法一:

#导入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())

 


                
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值