• Python中的路径


    转义

    windows路径使用的是\,linux路径使用的是/。

    特别的,在windows系统中如果有这样的一个路径 D:\nxxx\txxx\x1,程序会报错。因为在路径中存在特殊符 \n(换行符)和\t(制表符),Python解释器无法自动区分。

    所以,在windows中编写路径时,一般有两种方式:

    • 加转义符,例如:"D:\\nxxx\\txxx\\x1"

    • 路径前加r,例如:r"D:\nxxx\txxx\x1"

    程序当前路径

    项目中如果使用了相对路径,那么一定要注意当前所在的位置。

    例如:在/Users/wupeiqi/PycharmProjects/CodeRepository/路径下编写 demo.py文件

    with open("a1.txt", mode='w', encoding='utf-8') as f:
        f.write("你好呀")

    用以下两种方式去运行:

    • 方式1,文件会创建在 /Users/wupeiqi/PycharmProjects/CodeRepository/ 目录下。

      cd /Users/wupeiqi/PycharmProjects/CodeRepository/
      python demo.py
    • 方式2,文件会创建在 /Users/wupeiqi目录下。
      cd /Users/wupeiqi
      python /Users/wupeiqi/PycharmProjects/CodeRepository/demo.py

    文件和路径相关

    os:获取路径、路径拼接、判断路径是否存在、创建文件夹、判断是否是文件夹\文件

    shutil:删除、复制、移动

    import shutil
    import os
    
    # 1. 获取当前脚本绝对路径
    path_1 = os.path.abspath(__file__)
    print(path_1)  # D:\python_DM\笔记\路径.py
    
    # 2. 获取当前脚本的上一级   获取上上级目录
    base_path = os.path.dirname(path_1)
    print(base_path)  # D:\python_DM\笔记
    base_path_base = os.path.dirname(base_path)
    print(base_path_base)  # D:\python_DM
    
    # 3. 路径拼接 join(base, p1, p2, p3,........)
    p1 = os.path.join(base_path, "多线程和多进程", "threading_event.py")
    print(p1)
    p2 = os.path.join(base_path, "haha")
    print(p2)
    
    # 4. 判断路径是否存在
    exists1 = os.path.exists(p1)
    exists2 = os.path.exists(p2)
    print(exists1)
    print(exists2)
    
    # 5. 创建文件夹  os.makedirs(路径) 会递归创建文件夹,不会创建文件
    path = os.path.join(base_path, "nihao", "haha", "txt.txt")
    if not os.path.exists(path):
        os.makedirs(path)  # 创建的txt.txt是一个文件夹,并不是一个文件
    
    # 6. 判断是否是文件夹  判断依据:根据路径去寻找文件夹是否存在,如果存在,再去判断是不是文件夹,否则直接False
    # 判断是否是文件:os.path.isfile(路径)    判断依据与判断文件相同
    path = os.path.join(base_path, "nihao", "haha", "txt.txt")
    is_dir = os.path.isdir(path)
    print(is_dir)
    
    path = os.path.join(base_path, "nihao", "haha", "txtx.txt")
    is_dir = os.path.isdir(path)
    print(is_dir)
    
    # 7. 删除文件或文件夹
    path = os.path.join(base_path, "nihao", "haha", "txtx.txt")
    if os.path.exists(path):
        os.remove(path)  # 只能删除文件,如果文件不存在则会报错
    
    path = os.path.join(base_path, "nihao")
    if os.path.exists(path):
        shutil.rmtree(path)  # 删除文件夹,可以删除所有子目录和目录下的文件,如果文件夹不存在则会报错
    
    # 8. 拷贝文件夹 只能拷贝文件,如果文件存在,则会报错,如果新路径不存在,则会创建
    path = os.path.join(base_path, "多线程和多进程")
    path1 = os.path.join(base_path, "Socket通信1")  # 拷贝后的文件名为"Socket通信1"
    shutil.copytree(path, path1)
    path1 = os.path.join(base_path, "Socket通信", "nihao123", "haha")  # 拷贝后的文件名为"nihao"
    shutil.copytree(path, path1)
    
    
    # 9.拷贝文件  如果拷贝文件时,文件夹不存在,则会报错
    path = os.path.join(base_path, "多线程和多进程", "threading_event.py")
    path1 = os.path.join(base_path, "Socket通信")  # 拷贝后的文件名为"threading_event.py"
    shutil.copy(path, path1)
    
    path1 = os.path.join(base_path, "Socket通信", "nihao.py")  # 拷贝后的文件名为"nihao.py"
    shutil.copy(path, path1)
    
    # 10.文件或文件夹重命名(或者叫移动)  移动时,如果移动后的路径不存在,则会报错
    path1 = os.path.join(base_path, "Socket通信", "test1.py")
    # path2 = os.path.join(base_path, "nihao1", "nihao") # 路径不存在,在移动时,程序报错
    # path2 = os.path.join(base_path, "nihao1") # 移动后文件的名字为nihao1,不知道时什么格式的文件
    # path2 = os.path.join(base_path, "nihao1.py") # 移动后文件的名字为nihao1.py
    path2 = os.path.join(base_path) # 移动后文件的名字为test1.py
    shutil.move(path1, path2)
  • 相关阅读:
    linux服务器上无root权限如何安装nodejs?
    Jupyter按tab键无法补全,而且报错TypeError: __init__() got an unexpected keyword argument 'column'的解决办法
    通过损失函数优化提高训练速度、准确性和数据利用率
    华为诺亚AutoML框架-Vega:(2) 代码结构
    华为诺亚实验室AutoML框架-Vega:(1) 介绍
    AutoML: A survey of the state-of-the-art综述期刊论文免费下载
    安装Docker 图形界面管理工具 -- Portainer
    Dockfile 编写示例(将 jar 制作成容器)
    Docker 常用命令集
    云服务器CentOS安装Docker
  • 原文地址:https://www.cnblogs.com/fjfsu/p/15828450.html
Copyright © 2020-2023  润新知