我遇到一个奇怪的问题,我不太确定如何解决。我有一个Python-selenium脚本,它使用相对路径将结果记录到文本文件中。
以下是设置日志文件的脚本部分:
log_file = './demo-logfiles/log_file_template.txt'
sys.stdout = open('log_file_template.txt', 'a',)
如您所见,它使用文件夹的相对路径。如果我将此脚本运行为:
python demo.py firefox MAC
,它运行完美,日志文件被发送到正确的文件夹。
如果我从更大的shell脚本中运行这个确切的Python脚本,它会返回'./demo-logfiles/log_file_template.txt'
不存在的错误。
我发现如果我将脚本更改为'../demo-logfiles/log_file_template.txt'
,它可以在更大的shell脚本中运行,但如果我正常运行它就会停止工作。
它可以在一个或另一个中起作用。以不同方式解释相对目录的原因是什么?我不想在Python / shell中运行两个单独的脚本。
原始python脚本位于/blah/blah/DEMO/demo.py
目录中,运行它的shell脚本位于/blah/blah/DEMO/demo-autotest/autotest_logger.sh
我已经确认我尝试运行的任何脚本都会出现此问题。我不应该更改原始Python代码以使其适用于shell脚本。我已经在shell脚本中考虑了它,并且它成功运行了该文件。
感谢。
答案 0 :(得分:2)
术语“相对目录”表示路径相对于某物。您可能认为它与包含路径但不正确的脚本有关。
相对路径是相对于解释脚本的进程的当前目录,即您在其中启动python
的文件夹。如果您在shell中,则可以使用echo $PWD
如果您在python
中启动/blah/blah
,那么它将成为当前目录,所有相对路径都相对于/blah/blah
。
请参阅answer of David Hollman了解如何获取当前脚本的路径,然后了解如何构建相对于此的路径。