gpt4 book ai didi

python - Bash 在脚本中找不到正确的目录

转载 作者:太空宇宙 更新时间:2023-11-04 01:11:08 24 4
gpt4 key购买 nike

我正在为我的文本编辑器制作一个压缩脚本,它正在运行到需要制作文件Run 的部分。 Run 内部只有这段代码:python ./App.pyc。当我在 Finder 中双击运行该程序时,它说它无法打开文件 './App.pyc' [Errno 2] No such file or directory within Terminal.

如果我在 cd 到目录 RunApp.pyc 之后通过终端运行它,它作品。我假设这是因为我们不在正确的目录中。

我的问题是,如何确保 Run 在正确的目录中运行?如果我将 cd 放入其中,它会工作,但如果有人将文件夹移动到其他地方,它将不再工作。


#!/usr/bin/python

### Compresser script.

# Compress files.
import App
import Colors

# Import modules
import os

# Clear the folder to put the compressed
# files in (if it exists).
try:
os.system('rm -rf BasicEdit\ Compressed')
except:
pass

# Remake the folder to put compressed files in.
os.system('mkdir BasicEdit\ Compressed')

# Move the compiled files into the BasicEdit
# Compressed folder.
os.system('mv App.pyc BasicEdit\ Compressed/')
os.system('mv Colors.pyc BasicEdit\ Compressed/')

# Create contents of run file.
run_file_contents = "python ./App.pyc\n"

# Write run file.
run_file = open("./BasicEdit Compressed/Run", 'w')
run_file.write(run_file_contents)

# Give permissions of run file to anybody.
os.system('chmod a+x ./BasicEdit\ Compressed/Run')

# Finally compress BasicEdit, and remove the old
# folder for BasicEdit Compressed.
os.system('zip -9r BasicEdit.zip BasicEdit\ Compressed')
os.system('rm -rf BasicEdit\ Compressed')

(PS,什么是[Errno 1]?我以前从未见过它。)

最佳答案

可以使用 os.chdir() 调用修改 Python 脚本的当前工作目录,之后对 . 的引用将是正确的。

如果你想找到当前正在运行的源文件的位置而不是硬编码一个目录,你可以使用:

os.chdir(os.path.dirname(__file__))

与此逻辑等效的 bash 是:

cd "${BASH_SOURCE%/*}" || {
echo "Unable to change directory to ${BASH_SOURCE%/*}" >&2
exit 1
}

参见 BashFAQ #28了解更多详情和注意事项。

关于python - Bash 在脚本中找不到正确的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27567003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com