726521.png

kujisanfun

GF  2021-02-03 16:42
(cc)

[全年龄正常向]python

关于相对路径的问题
为什么我写的代码,创建的txt在py文件的上一级路径里


以前也尝试找了点解决方法,但都没解决,发现绝对路径没这问题就不管了,最近要用到相对路径又不得不来问
具体代码该怎么写
此帖悬赏结束
最佳答案: 50 SP币
最佳答案获得者: 5b49cc77

5.gif

rnqq

最佳答案奖励: (+50) SP币

none.gif

我住隔壁

很简单
open("../123.txt") 注意是两个点
热心助人奖励: (+1) SP币

726521.png

kujisanfun

B3F  2021-02-03 16:59
(cc)

回 1楼(我住隔壁) 的帖子

我自己探索出来的结果是这样的:
“123.txt”是py路径的上一级
“./123.txt”也是py路径的上一级
“../123.txt”是py路径的最上级,比如桌面啥的

只有“(py所在文件夹名)/123.txt”才能创建txt与py同一文件夹下

这跟书上写的不一样啊

726521.png

kujisanfun

B4F  2021-02-03 17:06
(cc)

回 3楼(Dva) 的帖子

卧槽,我试了一下还真是,用vscode和直接双击运行py文件居然是两种不同结果

726521.png

kujisanfun

B5F  2021-02-03 17:07
(cc)
垃圾vscode

5.gif

rnqq

回 5楼(Sayaori) 的帖子

pycharm友好一些,vscode只是个编辑器,跟记事本差不多,靠着插件实现其他功能

none.gif

我住隔壁

回 2楼(Sayaori) 的帖子

首先明确一点,操作系统里”." 代表当前目录, '.."代表上级目录
所以其实"./123.txt" 跟 “123.txt" 是等同的

至于你说上面前两种写法结果都是上级目录,而第三种是最上级。
应该是命令执行目录不在脚本文件所在目录。举个例子:

脚本文件路径是D:\Workspace\a.py 内容如下:
with open("123.txt", "w") as f:
    f.write("test")

如果你在D:\Workspace 执行 python a.py   123,txt文件会创建在D:\workspace
如果你D:\执行 python Workspace\a.py   123,txt文件会创建在D:\

5.gif

rnqq

回 7楼(我住隔壁) 的帖子

你没用过vscode吗,只有vscode是这样

726521.png

kujisanfun

B9F  2021-02-03 17:24
(cc)

回 6楼(Dva) 的帖子

习惯用vscode了,知道这么个事就行,实际开发再说,我也是最近心血来潮想解决这个问题才问的,绝大多数用的还是绝对路径

none.gif

我住隔壁

回 8楼(Dva) 的帖子

我确实没用过vscode, 但这个不完全怪编辑器的问题。
vscode只是在两种不同方式执行时,命令的工作目录不同。
严格来说还是代码不够严谨,因为从不同的工作目录启动命令得到的结果不一致。

如果要求文件一定创建在脚本文件的上级目录,不管从哪里启动脚本结果都一样。

应该写成
import os

base = os.path.dirname(__file__)

with open("%s/../123.txt" % base, "w") as f:
    f.write("")

726521.png

kujisanfun

B11F  2021-02-03 18:31
(cc)

回 10楼(我住隔壁) 的帖子

书上怎么教我怎么学着写吧了,又不是科班,甚至没培训,兴趣使然学点罢了