失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python相对路径找不到文件_Python里使用相对路径的坑

python相对路径找不到文件_Python里使用相对路径的坑

时间:2023-12-18 06:28:40

相关推荐

python相对路径找不到文件_Python里使用相对路径的坑

过程

写了个脚本丢服务器里, 每次启动时都要去读取一个cache文件

open('table.cache', 'rb')

然后为脚本设置了一个软连接, 以后用search命名就能使用脚本了

ln -s /home/search.py /usr/bin/search

但是, 启动时却提示未找到cache文件

FileNotFoundError: [Errno 2] No such file or directory: 'table.cache'

我猜测它可能去'/usr/bin/search'里找 'table.cache'了, 于是,

touch /usr/bin/table.cache

但还是提示找不到文件, 最后猜测, 它可能在当前目录找了, 于是我随便切到一个目录里:

cd /tmp/.X11-unix/

touch table.cache

search

这下对了!

Python里写这种相对路径, 是相对于终端的当前目录的.

解决

解决办法是, 获取脚本所在目录, 构造绝对路径:

print('getcwd', os.getcwd())

print('sysargv', sys.argv)

print('realpath', os.path.realpath(sys.argv[0]))

print('realpath.split', os.path.split(os.path.realpath(sys.argv[0]))[0]) # 这是脚本所在目录

print('__file__', __file__)

print('__file__.dir', os.path.dirname(__file__)) # 这也是脚本所在目录

将上诉代码保存在 /home/speng/t.py 里, 然后:

cd /etc/named

python3 /home/speng/t.py

输出:

getcwd /etc/named

sysargv ['/home/speng/t.py']

realpath /home/speng/t.py

realpath.split /home/speng

__file__ /home/speng/t.py

__file__.dir /home/speng

如果觉得《python相对路径找不到文件_Python里使用相对路径的坑》对你有帮助,请点赞、收藏,并留下你的观点哦!

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