![来自根路径的Python文件问题](https://linux22.com/image/37078/%E6%9D%A5%E8%87%AA%E6%A0%B9%E8%B7%AF%E5%BE%84%E7%9A%84Python%E6%96%87%E4%BB%B6%E9%97%AE%E9%A2%98.png)
我有一个经过充分测试并且可以正常工作的脚本。我遇到了一个问题,当我尝试运行它时/root/backup/script.py
,或者~/backup/script.py
当它运行并查找从脚本内调用的其他文件时,我从脚本中收到文件未找到错误。它可以在其他机器上工作,但设置是相同的,如果我在我的主目录中运行python backup/script.py
或直接运行它,python script.py
它就可以工作。它试图获取的文件与 script.py 位于同一目录中,所以我看不出出了什么问题。它可以获取脚本调用的第一个文件,但无法获取该文件。
我认为这可能是某种路径问题,因为如果以相同的方式完成,它也适用于其他系统。
编辑
阅读第一条评论后,我发布了正在崩溃的代码片段,并意识到第一个文件也没有被发现,就像我说的,对代码中的错误感到抱歉。正如我上面所说,它可以在其他位置工作,但不能在我提到的两个位置工作。
storage = Storage("user_creds.dat")
credentials = storage.get()
if credentials is None or credentials.invalid:
credentials = run_flow(flow_from_clientsecrets("client_secrets.json", OAUTH_SCOPE, ), storage, fla$
答案1
文件未找到错误可能是由于您从不同的目录启动脚本所致。
storage = Storage("user_creds.dat")
只会发现user_creds.dat
脚本是否启动从该目录,例如
]$ pwd
~/backup
]$ python script.py
如果您需要能够从任何地方启动脚本,您可以指定user_creds.dat
.或者,您可以使用以下命令来获取脚本所在的目录:
os.path.dirname(os.path.realpath(__file__))
然后你可以通过以下方式获取你的存储对象
os.path.join(os.path.dirname(os.path.realpath(__file__)), 'user_creds.dat')