这是文件路径系列的第3篇。很多网友碰到找不到文件的问题,都是因为对Python读取文件路径的知识理解不深。本周的每天3分钟,我们就主要围绕路径问题。
今天主要从概念上再聊一下相对路径和绝对路径。内容是是从我出版的书Python办公效率手册中的一段。
初学者经常会被读取不到文件的问题所困扰。遇到这种问题首先看自己是否有拼写错误,然后就是要理解好本节的内容:文件路径。
前面的代码在读取文件时,并没有指明文件所在的目录。默认情况下,Python会以执行Python命令的目录为起点查找文件:
with open('zen.txt', 'r') as f:
print(f.read())
假设我的程序和数据文件都放在C:\maishu\files下:
如果在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。
举个例子,帮你更好地理解相对路径:
宝贝的位置是相对于当时说这句话的人所在的位置,在不同的地方说这句话就会导致不同的宝贝地址。
相对路径虽然方便,但也有很大的局限性,在不同的目录下执行程序可能会产生不同的结果。为了稳定可靠,我们可以指定文件的完整目录,也就是绝对路径。这样不管在哪里执行程序,都能够正确地读取到文件。
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。
用上面的例子来理解绝对路径:
这是一个绝对地址,不管在什么地方告诉你,你都可以正确无误地找到这个绝对地址。
作为一个代码打工仔,对于绝大部分程序员来说,想要成为牛逼的真正挣钱程序员的路还很长,一刻都不能懈怠。
我们无法从HR角度,或者技术leader的角度来臆测哪种状态的面试更能获取面试官青睐。但通过我们积攒的大量的面试经验,大家多少可以推断一些成为有竞争力的程序员的一些必要条件。
当初我在字节认识一个非常非常资深的前辈,他到字节比我早三年,但因为各种原因级别不是很高。我当时问他,既然你对现状如此不满,为什么不想着离开寻找更好的机会呢?
他沉思了片刻跟我说,他说我现在在这里虽然待着不顺心,但是我接触到的人都是非常优秀的。我遇到问题,还可以和你们讨论讨论。我如果出去了,我要是再遇到问题,可能连一个讨论的人都没有。
我当时听听只是觉得有道理,现在再回想起来,感受非常深刻。三观、格局、能力,能够进入大公司的,这三个方面一般都不会太差。别的不说,就拿个人能力而言,我曾出国出差过几个月,有幸见识了许多各种海外名校的同事,和他们学习交流人工智能,这真的让我AI有了更深层次的认识。
除了优秀的同事之外,大公司里往往还有丰富的内部文档和资料。我当时在字节内部看到了很多优秀的文章,也有很多优秀的技术沙龙和分享。现在想起来两年下来,也没有去过几次,文章和资料看得也不算多,现在想想颇为遗憾。别的不说,就拿推荐领域而言,近些年质量不错的论文往往都来源于大公司尤其是国内的大公司,以腾讯、华为和头条为主。除了公开的论文,公司内部还有很多技术相关的资料和文档,这些真的可以说是有价无市,非常珍贵。
Python 知识手册
Linux 知识手册
爬虫查询手册
而且,这些资料不是扫描版的,里面的文字都可以直接复制,非常便于我们学习:
数据分析知识手册:
机器学习知识手册:
金融量化知识手册:
我们大量需要前端岗位、python岗位、Java 岗位、Android 和 iOS 的开发岗位,工作地点:北京字节,欢迎校招社招扫描下方二维码找我内推
Python资料、技术、课程、解答、咨询也可以直接点击下面名片,
添加官方客服斯琪
↓