Python3 创建目录,加不加 '.' 表示相对目录起点,有区别吗?

2018-01-08 13:58:14 +08:00
 miniyao
os.mkdir('./my-project/scripts/') 或者用 os.mkdir(os.path.join('.', 'my-project', 'scripts')) 这两种写法,加不加 '.' 都可以执行。

主要用 Py3,加 '.' 和 不加 '.' 表示相对目录起点,有什么区别吗?(印象里 Py2 版本,以前看到有人说不加 '.' 在某些系统上会 OSError?)
2337 次点击
所在节点    Python
6 条回复
ysc3839
2018-01-08 15:13:10 +08:00
我猜测要看操作系统怎么处理。
est
2018-01-08 15:23:34 +08:00
跟 python 和 3 和创建 和目录都没关系。跟操作系统文件系统 syscall 有关系。
flniu
2018-01-08 22:28:56 +08:00
“都可以执行”。。。
一个语句只要没有语法错误,就可以执行,能说明什么?
flniu
2018-01-08 22:32:11 +08:00
>>> import os
>>> os.path.join('.', 'my-project', 'scripts')
'./my-project/scripts'
>>> os.path.join('my-project', 'scripts')
'my-project/scripts'

'./my-project/scripts' 和 'my-project/scripts' 倒是等价。
'./my-project/scripts' 和 '/my-project/scripts' 意思差远了去了。

建议楼主温习 Linux 基础知识。从前流行《鸟哥的 Linux 私房菜》,不知道现在流行的 Linux 入门书是什么。
miniyao
2018-01-09 09:18:38 +08:00
@flniu 谢谢,解释一下,我说 os.mkdir('./my-project/scripts/') 加不加 '.' 都可以执行的意思,这里是指加不加 './'。

'/path' 斜杠打头,没理解错的话,是指绝对根目录吧
thautwarm
2018-01-09 21:57:37 +08:00
windows 按 package 路径优先搜索,而 linux 会优先搜索当前目录。
windows 上,你使用`some_script.py filename`时,这个`filename`不按照`./`开头,就会优先查 python 目录的 scripts/底下的`filename`。
linux 下的,见 4L 的说法。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/421032

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX