python:将脚本工作目录更改为脚本自己的目录

标签 python working-directory

我每分钟从 crontab 运行一个 python shell:

* * * * * /home/udi/foo/bar.py

/home/udi/foo 有一些必要的子目录,例如 /home/udi/foo/log/home/udi/foo/config/home/udi/foo/bar.py 所指。

问题是 crontab 从不同的工作目录运行脚本,因此尝试打开 ./log/bar.log 失败。

有没有一种好方法可以告诉脚本将工作目录更改为脚本自己的目录?我想要一个适用于任何脚本位置的解决方案,而不是明确告诉脚本它在哪里。

编辑:

os.chdir(os.path.dirname(sys.argv[0]))

是最紧凑优雅的解决方案。感谢您的回答和解释!

最佳答案

这会将您当前的工作目录更改为以便打开相对路径:

import os
os.chdir("/home/udi/foo")

但是,您询问了如何更改 Python 脚本所在的目录,即使您在编写脚本时不知道该目录是什么目录。为此,您可以使用 os.path 函数:

import os

abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname)

这将获取脚本的文件名,将其转换为绝对路径,然后提取该路径的目录,然后更改为该目录。

关于python:将脚本工作目录更改为脚本自己的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1432924/

相关文章:

java - "java.lang.IllegalStateException: The driver executable does not exist"报告奇数附加路径

python - NLTK 词性缩写引用

python - 在 Pycharm 中对类装饰属性进行类型检查

R list.files(my_working_directory) 没有显示文件,但我知道它们在那里。怎么修?

php - Cron 作业的工作目录

git - 如何显示我当前工作目录和我上次提交的差异?

python - wxPython无法退出

python - 复制签名,转发包装函数的所有参数

python - Abaqus 脚本测量/计算表面积

c - 可以设置当前目录吗?