python获取文件父级目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python获取文件父级目录相关的知识,希望对你有一定的参考价值。

参考技术A os.path.abspath(path) //返回绝对路径
os.path.dirname(path) //返回文件路径
os.path.pardir //..表示上一级目录
os.path.join(path1[, path2[, ...]]) //把目录和文件名合成一个路径

仅压缩目录的内容,不包括父级 - Python

【中文标题】仅压缩目录的内容,不包括父级 - Python【英文标题】:ZIp only contents of directory, exclude parent - Python 【发布时间】:2017-02-05 18:49:54 【问题描述】:

我正在尝试压缩目录的内容,而不压缩目录本身,但是我找不到明显的方法来做到这一点,而且我对 python 非常陌生,所以它对我来说基本上是德语。 这是我正在使用的代码,它成功地包含了父级以及内容:

#!/usr/bin/env python
import os
import zipfile

def zipdir(path, ziph):
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file))

if __name__ == '__main__':
    zipf = zipfile.ZipFile('Testing.zip', 'w', zipfile.ZIP_DEFLATED)
    zipdir('android', zipf)
    zipf.close()

我试过修改它,但总是以难以理解的错误告终。 任何帮助将不胜感激。

【问题讨论】:

你用的是哪个python版本? 阅读文档:write 有第二个参数 - 存档中的名称。 【参考方案1】:

write 有第二个参数 - 存档中的名称,即。

ziph.write(os.path.join(root, file), file)

编辑:

#!/usr/bin/env python
import os
import zipfile

def zipdir(path, ziph):
    length = len(path)
    
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        folder = root[length:] # path without "parent"
        for file in files:
            ziph.write(os.path.join(root, file), os.path.join(folder, file))

if __name__ == '__main__':
    zipf = zipfile.ZipFile('Testing.zip', 'w', zipfile.ZIP_DEFLATED)
    zipdir('android', zipf)
    zipf.close()

Pathlib解决方案

from pathlib import Path 

def zipdir(parent_dir : str , ziph : ZipFile) -> None:
    
    for file in Path(parent_dir).rglob('*'): # gets all child items
        ziph.write(file, file.name) 

【讨论】:

您也可以使用 os.path.relpath 从绝对路径中获取相对路径,以防您知道要从哪个目录开始。

以上是关于python获取文件父级目录的主要内容,如果未能解决你的问题,请参考以下文章

Python 获取父级文件夹的名字

dirname的用法:获取文件的父级目录路径

typecho如何获取 父级分类 名称?

python学习之获取文件动态路径命令

python 相对路径和绝对路径的区别

如何从 TypeScript 文件中的父级获取子组件变量和函数