Python相对路径 vs 绝对路径

本文介绍了Python中相对路径和绝对路径的概念及其使用。相对路径是根据执行脚本的目录来查找文件,而绝对路径则提供文件的完整路径,确保在任何目录下都能找到文件。在不同目录下运行程序可能导致相对路径失效,因此绝对路径更为稳定。内容摘自《Python办公效率手册》。
摘要由CSDN通过智能技术生成

相对路径 vs 绝对路径

这是文件路径系列的第3篇。很多网友碰到找不到文件的问题,都是因为对Python读取文件路径的知识理解不深。本周的每天3分钟,我们就主要围绕路径问题。

今天主要从概念上再聊一下相对路径和绝对路径。内容是是从我出版的书Python办公效率手册中的一段。

初学者经常会被读取不到文件的问题所困扰。遇到这种问题首先看自己是否有拼写错误,然后就是要理解好本节的内容:文件路径。

1)相对路径

前面的代码在读取文件时,并没有指明文件所在的目录。默认情况下,Python会以执行Python命令的目录为起点查找文件:

with open('zen.txt', 'r') as f:
    print(f.read())

假设我的程序和数据文件都放在C:\maishu\files下:

  • 程序:learn_path.py
  • 文件:zen.txt

如果在C:\maishu目录下执行Python命令:

python files\learn_path.py

程序会报错:

FileNotFoundError: [Errno 2] No such file or directory: 'zen.txt'

这是因为在C:\maishu目录下并没有zen.txt。zen.txt在C:\maishu\files下。有两种方法来处理这个错误:

1.在C:\maishu\files下去执行命令: python learn_path.py,这时因为执行的目录就是在files下,所以去files下可以找到zen.txt,就不会报错了。

2.仍然在C:\maishu下执行命令:python files/learn_path.py,但把代码修改一下:

with open('files/zen.txt', 'r') as f:
    print(f.read())

因为读取文件的时候写的是"files/zen.txt",所以会在C:\maishu下的files文件夹中去读取zen.txt,也没问题了。

这叫做**相对路径,**Python会以执行脚本的目录为起点去查找文件。

  • 相对路径可以引用子目录,比如"folder1/folder1/file.txt"是指当前目录下的子目录folder1下的下一级子目录folder2下的文件file.txt。

  • 相对路径可以引用上一级目录,用两个点“…”表示上一级目录。比如:

  • "…/folderx/filex.txt"表示上一级目录下的folderx下的文件filex.txt。

  • "…/…/folderx/filex.txt"表示上一级目录的再上一级目录下的folderx目录下文文件filex.txt。

举个例子,帮你更好地理解相对路径:

  • 往前走100米,左转,然后再走200米,就能找到宝贝。

宝贝的位置是相对于当时说这句话的人所在的位置,在不同的地方说这句话就会导致不同的宝贝地址。

2)绝对路径

相对路径虽然方便,但也有很大的局限性,在不同的目录下执行程序可能会产生不同的结果。为了稳定可靠,我们可以指定文件的完整目录,也就是绝对路径。这样不管在哪里执行程序,都能够正确地读取到文件。

file = "C:/maishu/files/zen.txt"
with open(file, 'r') as f:
    print(f.read())

因为file的路径是从盘符开始的,也就是指定了绝对路径,不管在哪个目录下执行python命令,都会去C:/maishu/files的目录下找zen.txt。

在Windows上,从盘符开始的路径,就是绝对路径,它指明了绝对的地址。

“对于Linux或者MacOS的操作系统,绝对路径是从斜杠开始的,比如/users/maishu/files/zen.txt。

用上面的例子来理解绝对路径:

  • 在中国,北京市,长安街第128号,从东往西,往前走100米,左转,然后再走200米,就能找到宝贝。

这是一个绝对地址,不管在什么地方告诉你,你都可以正确无误地找到这个绝对地址。

职业发展

作为一个代码打工仔,对于绝大部分程序员来说,想要成为牛逼的真正挣钱程序员的路还很长,一刻都不能懈怠。

我们无法从HR角度,或者技术leader的角度来臆测哪种状态的面试更能获取面试官青睐。但通过我们积攒的大量的面试经验,大家多少可以推断一些成为有竞争力的程序员的一些必要条件。

大佬云集、资料丰富

当初我在字节认识一个非常非常资深的前辈,他到字节比我早三年,但因为各种原因级别不是很高。我当时问他,既然你对现状如此不满,为什么不想着离开寻找更好的机会呢?

他沉思了片刻跟我说,他说我现在在这里虽然待着不顺心,但是我接触到的人都是非常优秀的。我遇到问题,还可以和你们讨论讨论。我如果出去了,我要是再遇到问题,可能连一个讨论的人都没有。

我当时听听只是觉得有道理,现在再回想起来,感受非常深刻。三观、格局、能力,能够进入大公司的,这三个方面一般都不会太差。别的不说,就拿个人能力而言,我曾出国出差过几个月,有幸见识了许多各种海外名校的同事,和他们学习交流人工智能,这真的让我AI有了更深层次的认识。

除了优秀的同事之外,大公司里往往还有丰富的内部文档和资料。我当时在字节内部看到了很多优秀的文章,也有很多优秀的技术沙龙和分享。现在想起来两年下来,也没有去过几次,文章和资料看得也不算多,现在想想颇为遗憾。别的不说,就拿推荐领域而言,近些年质量不错的论文往往都来源于大公司尤其是国内的大公司,以腾讯、华为和头条为主。除了公开的论文,公司内部还有很多技术相关的资料和文档,这些真的可以说是有价无市,非常珍贵。

Python 知识手册

Linux 知识手册

爬虫查询手册

而且,这些资料不是扫描版的,里面的文字都可以直接复制,非常便于我们学习:

数据分析知识手册:

机器学习知识手册:

金融量化知识手册:

岗位内推、学习交流

我们大量需要前端岗位、python岗位、Java 岗位、Android 和 iOS 的开发岗位,工作地点:北京字节,欢迎校招社招扫描下方二维码找我内推

Python资料、技术、课程、解答、咨询也可以直接点击下面名片,添加官方客服斯琪

Python中的相对路径是指相对于当前工作文件夹的路径,用于定位文件或目录。可以使用`os.getcwd()`函数获取当前的工作文件夹路径。相对路径通常使用相对于当前文件所在位置的路径。例如,如果当前文件位于`/home/user/documents/code`目录下,而要引用同级目录下的`data.csv`文件,则相对路径可以是`./data.csv`。 绝对路径是指完整的文件或目录路径,不依赖于当前工作文件夹。在Windows操作系统中,可以通过按住Shift键并右键单击文件,然后选择“复制为路径”来获取文件的绝对路径。 在Python中使用相对路径时,可以使用`open()`函数来打开文件,并传递相对路径作为参数。例如,使用`open('..\111.txt', 'r', encoding='utf8')`来打开上级目录中的`111.txt`文件。 总结起来,相对路径是相对于当前工作文件夹的路径,而绝对路径是完整的文件或目录路径。相对路径可以使用`os.getcwd()`函数获取当前工作文件夹路径,而绝对路径可以通过在文件资源管理器中获取文件的绝对路径。在Python中使用相对路径时,可以使用`open()`函数来打开文件,并传递相对路径作为参数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python绝对路径相对路径](https://blog.csdn.net/weixin_42830697/article/details/120015478)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值