300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 彻底解决文件路径问题

彻底解决文件路径问题

时间:2018-08-13 09:43:45

相关推荐

彻底解决文件路径问题

彻底解决文件路径问题

一个例子

假设下面的目录下有两个文件:

D:/code/058.pyD:/code/058.txt

058.txt的内容很简单,就一句话:

跟杰哥搞定路径问题

而058.py也很简单,就是打印出这个文件的内容:

with open('058.txt') as file:print(file.read())

如果我们在D:/code目录下执行:

>>> python 058.py

可以成功地打印出文件内容:

跟杰哥搞定路径问题

这证明Python可以成功找到数据文件058.txt

找不到文件的错误

但如果切换目录,比如在**D:/**根目录下执行命令:

>>> python code/058.py

则会得到错误:

Traceback (most recent call last):File "D:/058.py", line 1, in <module>with open('058.txt') as file:FileNotFoundError: [Errno 2] No such file or directory: '058.txt'

错误的最后一行说:FileNotFoundError: [Errno 2] No such file or directory: ‘058.txt’

意思就是说:找不到文件或目录058.txt

这也太脆弱了,换个目录就不能运行了。就不要说发给别人了!!!

重要知识

我们在代码中是这样写的:open(‘058.txt’)。

这告诉Python去打开文件058.txt,但并没有告诉Python去哪里找这个文件。

Python只能在运行命令的当前目录下查找这个文件。如果找不到就只能报错了。

这种写法也叫相对路径。因为你没有告诉具体的地址,所以我只能相对于你当前的目录去寻找,所以是相对路径

另外一种是绝对路径,关于相对路径和绝对路径的概念,明天的3分钟可以再专门讲讲,请保持关注。

解决方法 - 用源代码相对路径

上面的执行之所以报错,是因为相对路径是相对于执行python命令的目录,而不是Python文件所在的目录。请注意理解这个概念。

我们第二次执行python命令是在D:盘根目录下,而文件058.txt是在D:\code目录下。所以找不到。

如果我们能够相对于python文件的路径去查找,那就好多了。只要我们保证数据文件058.txt058.py在同一个目录下就可以了。

这是个不错的想法,我们试试看:

import pathlibfolder = pathlib.Path(__file__).parent.resolve()print(f'当前python文件所在目录:{folder}')with open(f'{folder}/058.txt') as file:print(file.read())

现在再去执行!不管你在任何目录下执行,都能够成功地打印文件:

当前python文件所在目录:/Users/maishu/git/wx_maishucode/code跟杰哥搞定路径问题

解释一下:

我们先使用pathlib库的Path类读取到当前执行的python文件的路径,其中魔术变量__file__代表当前的文件。然后通过.parent()找到文件所在的目录,然后再用resolve()解析成文件字符串。代码中打印了这个字符串。在打开文件的时候,通过f’{folder}/058.txt’拼接出完整的目录,这样Python就能准确地找到文件了,而且和执行python命令的目录是无关的。

职业发展

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

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

大佬云集、资料丰富

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

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

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

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

Python 知识手册

Linux 知识手册

爬虫查询手册

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

数据分析知识手册:

机器学习知识手册:

金融量化知识手册:

岗位内推、学习交流

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。