标识python脚本是从哪里启动的



我正在查看处理参数的方法,当我意识到我实际上想做一些稍微不同的事情时。

基本上,我在Jupyter中编写python3脚本作为foo.ipynb在小数据集上测试它,并与我的团队轻松共享,但我也将脚本导出到foo.py并在我们的集群上运行它以获得更大的数据集。我希望它有一些不同的行为,比如从参数中获取文件路径或不,这取决于脚本是如何运行的。

python脚本是否有办法知道它是在Jupyter笔记本中运行还是通过命令行运行?我们的集群使用slurm,所以foo.py将从bash脚本调用,是否有任何方法来处理?

您可以使用__file__(Python文档)

当通过python foo.py直接调用foo.py时,__file__将被设置,例如:只有print(__file__)foo.py将输出foo.py

如果在Jupyter中调用,则不会设置。

关于slurm,我建议在脚本中传递另一个参数来区分它,例如foo.py --slurm与argparse。


代码附录:

if '__file__' in locals():
print(__file__)
else:
print('__file__ not set')

最新更新