Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
区分何时运行脚本和#x27;直接';,或者使用Python可执行文件_Python_Boolean_Executable_Execution_Self - Fatal编程技术网

区分何时运行脚本和#x27;直接';,或者使用Python可执行文件

区分何时运行脚本和#x27;直接';,或者使用Python可执行文件,python,boolean,executable,execution,self,Python,Boolean,Executable,Execution,Self,Python程序如何确定它是否在Unix系统上作为可执行文件执行,而不是作为脚本调用 ./program.py 而不是 python ./program.py sys.argv[0]中的“/program”无法区分示例情况。一个有点粗俗的解决方案是在program.py中的shebang行中添加一个环境变量来指示这一点: #!/usr/bin/env noscript=True python import os if os.getenv('noscript'): print("cal

Python程序如何确定它是否在Unix系统上作为可执行文件执行,而不是作为脚本调用

./program.py
而不是

python ./program.py

sys.argv[0]
中的“/program”无法区分示例情况。

一个有点粗俗的解决方案是在
program.py
中的shebang行中添加一个环境变量来指示这一点:

#!/usr/bin/env noscript=True python
import os
if os.getenv('noscript'):
    print("called as executable")
else: 
    print("called as script")

一个有点粗俗的解决方案是在
program.py
中的shebang行中添加一个环境变量来表示这一点:

#!/usr/bin/env noscript=True python
import os
if os.getenv('noscript'):
    print("called as executable")
else: 
    print("called as script")

真的没有区别。如果您设置可执行位,操作系统最终将执行您在命令行上执行的操作——它执行
python script.py
。唯一的区别是操作系统查看以
#开头的第一行以精确确定要运行的python版本。

实际上没有区别。如果您设置可执行位,操作系统最终将执行您在命令行上执行的操作——它执行
python script.py
。唯一的区别是操作系统查看以
#开头的第一行
来精确确定要运行的python版本。

我认为这是不可能的。Unix不区分这两种情况,shell在遇到
#时只会为您执行
python program.py
/usr/bin/env python
shebang行。这些知识可以解决什么类型的问题?你到底想做什么?我不相信这是可能的。Unix不区分这两种情况,shell在遇到
#时只会为您执行
python program.py
/usr/bin/env python
shebang行。这些知识可以解决什么类型的问题?你到底想完成什么?