美文网首页
python中对路径的操作

python中对路径的操作

作者: 转身丶即天涯 | 来源:发表于2018-12-02 23:52 被阅读15次

python强大的API赋予了我们快捷操作路径的方式,为我们熟知的os.path模块就是专门操作路径的。
这里解释一下为什么要用API呢?路径不就是字符串么,我直接拼接就ok了啊。
第一,因为快捷,你可以根据API,一两句代码就搞定了路径问题,而拼接需要更多的代码,而且容易出错。
第二,常用操作系统大致分为两类,window和类Unix系统(包括Mac OSX和Linux),由于使用的文件系统不同,所使用的路径分隔符也不同,自己拼接的需要考虑到跨平台性。


测试代码如下:

"""
created by nzh
Date: 2018/12/2 10:45 PM
"""

import os

path_list = ['Users', 'nzh', 'temp']
path = os.path.join('Users', 'nzh', 'temp', 'dockerImage')

# print(path)

# 获取当前工作路径
current_path = os.getcwd()
# print(current_path)

# 改变当前工作路径
# change_to_dir = '/Users/nzh/temp'
# os.chdir(change_to_dir)
# print(os.getcwd())

# 如果要切换到的路径不存在,则会引发FileNotFoundError异常
# change_to_dir = '/NotExistPath'
# os.chdir(change_to_dir)


# 绝对路径 & 相对路径
# 绝对路径是从根目录开始到目标目录的路径
# 相对路径是从当前工作目录开始到目标目录的路径


# 两个特殊符号'.' 和'..'
# '.'代表当前目录,'..'代表父目录


# 创建新文件夹
# 如果只写文件名,会在当前目录下创建
# 但是如果这个文件夹已经存在了,则会引发FileExistsError
# os.makedirs('test')
# 如果指定文件夹的绝对路径,则会在指定的绝对路径下创建目录
# os.makedirs('/Users/nzh/temp/testdir')


# 把相对路径转换为绝对路径
dir_path = 'test'
abspath = os.path.abspath(dir_path)
# print(abspath)

# 判断路径是绝对路径还是相对路径
is_abspath = os.path.isabs(abspath)
# print(is_abspath)


# 返回从start到path的相对路径的字符串
# os.path.relpath(path, start)
# 结果是,去掉path中start部分的字符串
relpath = os.path.relpath(abspath, '/Users/nzh')
# print(relpath)

# 还能用来计算两个目录路径之间的相对路径
# 比如,你想知道'test'目录和'/Users/nzh/temp'目录之间的相对路径
# 先搞清楚以谁为参照目录,就是start。
# 换句话说就是,从start到path的相对路径
relpath = os.path.relpath('/Users/nzh/temp', 'test')
# print(relpath)


# 获取文件名或者目录所在的路径
# 如果是文件名,则返回路径中去掉文件名的部分
dir_path = os.path.dirname('fileOperation.py')
# print(dir_path)
# 如果你传入的是一个文件夹的名字,那么会返回这个文件夹的绝对路径去掉文件名的部分
dir_path = os.path.dirname('test')
# print(dir_path)


# 获取路径中的基础名(basename)
# 比如'/Users/nzh/PythonCode/import-practise/fileOperation.py'
# 中,我想获取'fileOperation.py'这个文件名
file_path = '/Users/nzh/PythonCode/import-practise/fileOperation.py'
# print(os.path.basename(file_path))

# 还可以从上述路径中,把目录部分和文件名部分拆分开
# 需要使用os.path.split(path)
# 调用结果是,返回一个tuple,第一个元素代表目录部分,第二元素代表文件名
res = os.path.split(file_path)
print(res)

# 其实就是把os.path.dirname(file_path)和os.path.basename(file_path)组合成了一个元祖
file_tuple = (os.path.dirname(file_path), os.path.basename(file_path))
print(file_tuple)


# 把路径中的每个部分放入列表
# os.path.sep代表操作系统的路径分隔符
# windows是'\'
# Mac OSX和Linux是'/'
# 所以返回的结果是不一样的,但是为了保证程序的跨平台性
# 就可以使用os.path.sep,它会根据你所使用的操作系统自动转换为对应的分隔符
# 不同操作系统,其实返回的结果只有第一位不同
# windows返回的是盘符,比如'C:'
# Mac OSX和Linux返回的是''
# 为什么会是''呢?
# 因为字符串的split函数会以传入的参数作为分隔符
# 而file_path又是以'/'开头的,左边是没有字符的,所以会被加上一个''
path_list = file_path.split(os.path.sep)
print(path_list)


实际工作中还会用到其他函数,比如获取文件大小,或者给定路径的文件是否存在等等。。。

"""
created by nzh
Date: 2018/12/2 11:53 PM
"""

import os

# 查看文件的字节数
# 先指定一个我们要查看的文件的路径
file_path = '/Users/nzh/PythonCode/import-practise/fileOperation.py'
file_size = os.path.getsize(file_path)
# print(file_size)


# 如果想知道一个目录下的所有文件的字节数,分为两步
# 第一步,列出改目录下所有文件。os.listdir()函数获取该目录下所有文件名,返回一个list
# 第二步,遍历list中的文件名,调用os.path.getsize()函数来获取字节数。
# 比如我就像知道'fileOperation.py'文件所在目录的所有文件大小
dir_path = os.path.dirname(file_path)
dir_list = os.listdir(dir_path)
# print(dir_list)
for i in dir_list:
    # print(os.path.getsize(os.path.join(dir_path, i)))
    pass

# ps:如果不清楚os.path.join()和os.path.dirname()函数,请看我的上一篇"python中操作路径"


# 那么我想知道一个目录使用了多少内存就好办了
# 把遍历算出来的字节数加到一起就OK了


# 检查路径是否有效
# 判断指定路径的文件或者文件夹是否存在
# 存在则返回True,否则返回False。
is_exist = os.path.exists(file_path)
# print(is_exist)

# 判断指定的路径是否是一个文件
is_file = os.path.isfile(file_path)
# print(is_file)

# 判断指定的路径是否是一个文件夹
is_dir = os.path.isdir(file_path)
# print(is_dir)

相关文章

  • python中对路径的操作

    python强大的API赋予了我们快捷操作路径的方式,为我们熟知的os.path模块就是专门操作路径的。这里解释一...

  • python学习干货教程(5):#!/usr/bin/pytho

    首先,只应用于类unix系统中。 #!/usr/bin/python :相当于python的绝对路径,是告诉操作系...

  • python的路径操作

    1.os.path(py3.4之前) 2. pathlib.Path(py3.4之后) 1.生成一个路径 2. 路...

  • Python:处理文件\文件夹的各种操作命令汇总

    1. python 中对文件、文件夹的操作 得到当前工作目录,即当前Python脚本工作的目录路径 返回指定目录下...

  • Python os文件操作

    本文实例讲述了python中os操作文件及文件路径的方法。分享给大家供大家参考。具体分析如下: python获取文...

  • python文件操作

    要用python操作文件,首先就是要获取要操作文件的路径,获取路径常见的函数为dirname、path、getcw...

  • PythonShell

    Unix操作系统一般会自带Python,在命令行中运行Python,查看它是否在搜索路径中并能否正常运行: 用命令...

  • 笔记

    文件操作路径和模块标识路径问题 文件操作中的相对路径可以省略 ./ 在模快加载中,相对路径中的 ./ 不能省略 在...

  • python学习的第二天

    Python文件操作 读取文件内置函数open file='文件的路径"相对路径即可。 “.”是代表当前文件下 ;...

  • Python类中属性搜索的顺序

    Python类中属性搜索的顺序 在传统类中(默认类,直到Python3),属性搜索处理对所有路径深度优先,直到继承...

网友评论

      本文标题:python中对路径的操作

      本文链接:https://www.haomeiwen.com/subject/waqecqtx.html