确定python脚本从何处启动

确定python脚本从何处启动,python,Python,当我意识到我实际上想做一些稍微不同的事情时,我正在研究处理争论的方法 基本上,我正在Jupyter中编写python3脚本,作为foo.ipynb,以便在小型数据集上测试它,并方便地与我的团队共享它,但我也会将脚本导出到foo.py,并在集群上为更大的数据集运行它。我希望它有一些不同的行为,比如是否从参数中获取文件路径,这取决于脚本的运行方式 python脚本有没有办法知道它是在Jupyter笔记本中运行的,还是通过命令行运行的?我们的集群使用slurm,因此将从bash脚本调用foo.py,有

当我意识到我实际上想做一些稍微不同的事情时,我正在研究处理争论的方法

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


python脚本有没有办法知道它是在Jupyter笔记本中运行的,还是通过命令行运行的?我们的集群使用slurm,因此将从bash脚本调用
foo.py
,有什么方法也可以处理这个问题吗?

您可以使用
\uuuu file\uuu
()

当通过
python foo.py
直接调用
foo.py
时,将设置
\uuuuu文件\uuuuu
,例如:
foo.py
仅使用
打印(\uuuu文件)
将输出
foo.py

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

关于slurm,我建议将另一个参数传递给脚本以区分这一点,例如,
foo.py--slurm
with


代码补遗:

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

你不能检查主机名并用它来区分行为吗?e、 g.对于
socket.gethostname()
@MarcoP,我不熟悉这个函数。把它写成一个答案,让我看看它是如何运作的?如果我的答案解决了你的问题,请考虑一下:- YVESYONE刚刚做了,我在等着看它,MarcoP有其他的建议,但是你的工作很好!