Python 目录操作

知道两个文件的绝对目录,怎样计算出两个文件的相对目录,例如:知道

  a = ‘/usr/share/pyshared/test/a.py‘
  b = ‘/usr/lib/dist/test/a.py‘

可以直接应用OS模块中的os.path.reppath得到结果:

  >>> print(os.path.relpath(a,b))
  ..\..\..\..\share\pyshared\test\a.py

但是计算结果是怎样实现的呢?

def _abspath_split(path):
    abs = abspath(normpath(path))
    prefix, rest = splitunc(abs)
    is_unc = bool(prefix)
    if not is_unc:
        prefix, rest = splitdrive(abs)
    return is_unc, prefix, [x for x in rest.split(sep) if x]

def relpath(path, start=curdir):
    """Return a relative version of a path"""

    if not path:
        raise ValueError("no path specified")

    start_is_unc, start_prefix, start_list = _abspath_split(start)
    path_is_unc, path_prefix, path_list = _abspath_split(path)

    if path_is_unc ^ start_is_unc:
        raise ValueError("Cannot mix UNC and non-UNC paths (%s and %s)"
                                                            % (path, start))
    if path_prefix.lower() != start_prefix.lower():
        if path_is_unc:
            raise ValueError("path is on UNC root %s, start on UNC root %s"
                                                % (path_prefix, start_prefix))
        else:
            raise ValueError("path is on drive %s, start on drive %s"
                                                % (path_prefix, start_prefix))
    # Work out how much of the filepath is shared by start and path.
    i = 0
    for e1, e2 in zip(start_list, path_list):
        if e1.lower() != e2.lower():
            break
        i += 1

    rel_list = [pardir] * (len(start_list)-i) + path_list[i:]
    if not rel_list:
        return curdir
    return join(*rel_list)

上述代码是relpath在Python中的内部实现,实现比较复杂,作为简单的可替代形式:

def ownrelpath(a,b):
    relpath = ‘‘;
    la = a.split(‘/‘);
    lb = b.split(‘/‘);
    L = len(lb)-1;
    tt = ‘‘;
    for i in range(len(la)-1):
        if la[i] == lb[i] and tt ==‘‘:
            continue;
        else:
            tt = tt+la[i]+"\\";
            relpath =  "..\\"*(L-1);
    print(relpath+tt);

  

				
时间: 2024-10-10 05:50:09

Python 目录操作的相关文章

python目录操作整理

python中用来操作系统目录的方法在os模块中,现将常用的一些方法整理如下 1.目录文件获取获取 os.listdir(参数)  获取当前目录内的所有文件,当不带参数时默认获取的是当前目录的,参数为目录结构如"d://test1/test2/test3/test.txt",跟上参数后为获取参数的目录文件 2.os.path.splite()目录拆分 可以把一个路径拆分为两部分,后一部分总是最后级别的目录或文件名 3.os.path.splitext()  把文件名与后缀分离出来,可以

python之OS模块(对文件or目录操作)

OS模块 os,语义为操作系统,包含普遍的操作系统功能,与具体的平台无关.python编程时,处理文件和目录这些操作,就比如说:显示当前目录下所有文件/删除某个文件/获取文件大小-- os模块不受平台限制,也就是说:当我们要在linux中显示当前命令时就要用到pwd命令,而Windows中cmd命令行下就要用到这个,例如:这时候我们使用python中os模块的os.path.abspath(name)功能,甭管是linux或者Windows都可以获取当前的绝对路径. 常见函数列表 os.name

python文件和目录操作函数小结

本文主要介绍python文件和目录操作函数小结,主要涉及到os模块和shutil模块的一些方法. python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()返回指定目录下的所有文件和目录名:os.listdir()函数用来删除一个文件:os.remove()删除多个目录:os.removedirs(r"c:\python")检验给出的路径是否是一个文件:os.path.isf

python文件和目录操作函数总结

有关python文件和目录操作函数小结,主要涉及到os模块和shutil模块的一些方法. python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()返回指定目录下的所有文件和目录名:os.listdir()函数用来删除一个文件:os.remove()删除多个目录:os.removedirs(r“c:\python”)检验给出的路径是否是一个文件:os.path.isfile()检验给出

Python文件和目录操作实例代码

对于文件和目录的处理,虽然可以通过操作系统命令来完成,但是Python语言为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数.重要的是,这些函数无论是在Unix.Windows还是Macintosh平台上,它们的使用方式是完全一致的. 本文将详细解释这些函数的使用方法.首先,介绍Python语言中类似于Windows系统的dir命令的列出文件功能,然后描述如何测试一个文件名对应的是一个标准文件.目录还是链接,以及提取文件大小和日期的方法.之后,还将介绍如何删除文件和目录

python 目录 文件操作大全

   目录操作  1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() >>> import os >>> os.getcwd() '/home/jack' 2.返回指定目录下的所有文件和目录名:os.listdir() >>> os.listdir('/home/jack') ['.profile', '.bashrc', 'test', '.bash_logout'] 3.函数用来删除一个文件:os.remove()

Python 文件和目录操作总结

Python文件和目录操作总结: 1. Python 中os模块基本命令 头文件 import os # 提供对操作系统进行调用的接口 os常用指令 1 os.getcwd() # 获取当前工作目录,即当前python脚本工作的目录路径 === linux: pwd 2 os.chdir("dirname") # 改变当前脚本工作目录:相当于shell下cd 3 os.curdir # 返回当前目录: ('.') 4 os.pardir # 获取当前目录的父目录字符串名:('..')

Python的os模块的一些常见文件和目录操作

转自:极客学院 Python 的 os 模块封装了常见的文件和目录操作,本文只列出部分常用的方法,更多的方法可以查看官方文档. 下面是部分常见的用法: 方法 说明  os.mkdir  创建目录 os.rmdir  删除目录  os.rename  重命名 os.remove 删除文件  os.getcwd 获取当前工作路径 os.walk 遍历目录 os.path.join 连接目录与文件名 os.path.split 分割文件名与目录 os.path.abspath 获取绝对路径 os.pa

Python OS简单文件/目录操作

Python OS简单文件/目录操作 Python的OS模块提供了丰富的文件和目录处理方法,这里指列举其中几个 参数不完全列举 删除.新建等操作 os.mkdir(path):在工作目录下创建一个名为path的文件夹 os.remove(path):删除路径为path的文件,如果不存在文件或者是一个文件夹则会抛出OSError os.rmdir(path):删除名为path的空文件夹,如果文件夹非空则会抛出OSError os.removedirs(path):递归删除文件夹 os.rename