转义

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)

Python中的路径的更多相关文章

  1. python中文件路径的问题

    慎用中文路径!慎重中文路径!!慎用中文路径!!! good = np.loadtxt(u'D:/feiq/feiq/Recv Files/Recv Files/LOS 数据集/good_user2', ...

  2. 关于python中的路径

    如果在train.py中调用了1.py中的A方法,则A中的相对路径按照train.py来写!

  3. 关于python中模块的import路径

    前两天被一个同事问了一个python的问题: 为什么一个目录里的python文件引用不要另一个兄弟目录的python文件,但是这两个目录的父母录运行时是可以引用到了.当时感觉一直是模块和包的机制问题, ...

  4. Comprehensive learning path – Data Science in Python深入学习路径-使用python数据中学习

    http://blog.csdn.net/pipisorry/article/details/44245575 关于怎么学习python,并将python用于数据科学.数据分析.机器学习中的一篇非常好 ...

  5. 【转载】路径双反斜杠!!!Python IDLE或Python shell中切换路径 切换目录os.chdir("C:\\python37\\2019pythonshel37\\diedai")

    Python IDLE或shell中切换路径在Python自带的编辑器IDLE中或者python shell中不能使用cd命令,那么跳到目标路径呢.方法是使用os包下的相关函数实现路径切换功能. im ...

  6. Python中的两种路径

    Java中有两种路径,一种是操作系统的路径path,另一种是类路径classpath. Python中也是如此,一种是操作系统环境变量中的path,另一种是PYTHONPATH. 当import xx ...

  7. python中的模块及路径(2)

    如果我们要添加自己的搜索目录,有两种方法: 一是直接修改sys.path,添加要搜索的目录: >>> import sys >>> sys.path.append( ...

  8. Python中的相对文件路径的调用

    先让我们来看看一个用到相对文件路径的函数调用的问题.假设现在有两个脚本文件main.py和func.py,他们的路径关系是: . |--dir1 |--main.py |--dir2 |--func. ...

  9. python 在Windows中描述路径时出现的问题

    问题的根本:windows读取文件可以用\,但在字符串里面\被作为转义字符使用,   python在描述路径时有两种方式: 'd:\\a.txt',转义的方式 r'd:\a.txt',声明字符串不需要 ...

随机推荐

  1. [react]react创建app,路由,mobx 全教程

    ​ 1.创建app, npx create-react-app my-app Cmd Copy 2.进入项目目录 cd my-app Cmd Copy 3.启用配置文件(默认是不开启配置文件的) ya ...

  2. 惊!世界上竟然有O(N)时间复杂度的排序算法!计数排序!

    啥?你以为排序算法的时间复杂度最快也只能O(N*log(N))了? O(N)时间复杂度的排序算法听说过没有?计数排序!!它是世界上最快最简单的算法!!! 计数排序算法操作起来只有三步,看完秒懂! 根据 ...

  3. 【LeetCode】746. Min Cost Climbing Stairs 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetc ...

  4. 【LeetCode】452. Minimum Number of Arrows to Burst Balloons 解题报告(Python)

    [LeetCode]452. Minimum Number of Arrows to Burst Balloons 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https ...

  5. 【LeetCode】473. Matchsticks to Square 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 回溯法 日期 题目地址:https://leetco ...

  6. ZOJ 3960:What Kind of Friends Are You?

    What Kind of Friends Are You? Time Limit: 1 Second Memory Limit: 65536 KB Japari Park is a large zoo ...

  7. 第四十五个知识点:描述一些对抗RSA侧信道攻击的基础防御方法

    第四十五个知识点:描述一些对抗RSA侧信道攻击的基础防御方法 原文地址:http://bristolcrypto.blogspot.com/2015/08/52-things-number-45-de ...

  8. Simplicial principal component analysis for density functions in Bayes spaces

    目录 问题 上的PCA Hron K, Menafoglio A, Templ M, et al. Simplicial principal component analysis for densit ...

  9. uniapp使用uni.openDocument打开文件时,安卓打开成功,iOS打开失败【原因:打开的文件的文件名是中文】

    解决办法:使用escape进行文件名编码 uni.downloadFile({ url: url, success: function(res) { var filePath = res.tempFi ...

  10. Capstone CS5265规格书|CS5265参数|TYPEC转HDMI音视频转换拓展坞芯片

    一.CS5265总概 Capstone CS5265 USB Type-C到HDMI转换器结合了USB Type-C输入接口和数字高清多媒体接口(HDMI)输出.嵌入式微控制器(MCU)基于工业标准8 ...