Emi*_*ily 2 python linux scripting
我是新手在终端中运行python脚本.我运行了脚本./filename.py并确保它是可执行的chmod + x filename.我还把#!/ usr/bin/env python放在程序的顶部.我没有错误,但我的终端中没有显示任何打印语句.附上是我的代码.有任何想法吗?
#!/usr/bin/env python
import ctypes
import os
def is_hidden(filepath):
name = os.path.basename(os.path.abspath(filepath))
return ('.' + name) or (has_hidden_attribute(filepath))
def has_hidden_attribute(filepath):
try:
attrs = ctypes.windll.kernel32.GetFileAttributesW(unicode(filepath))
assert attrs != -1
result = bool(attrs & 2)
except (AttributeError, AssertionError):
result = False
return result
def main():
print ('whatup')
print(is_hidden('~/.jupyter'))
print('hey')
Run Code Online (Sandbox Code Playgroud)
然后从终端
$ ./makepass_jup.py
$
Run Code Online (Sandbox Code Playgroud)
小智 6
你不是在main任何地方调用你的功能.在文件末尾添加:
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
if这里的语句是Python中的常见模式.当作为模块导入文件时,它可以防止执行代码.当Python解释器导入文件时,它会设置__name__变量.如果从另一个模块导入此文件,__name__则将设置为模块的名称.但是如果文件作为主程序执行,__name__变量将被设置为__main__,所以只有当文件作为程序执行时,才会执行该语句中的代码.
请参阅问题的接受答案如果__name__ =="__ main__"该怎么办?欲获得更多信息.
在 Python 中,main()函数不是入口点,这与 C 或 Java 等其他语言不同。就像其他人指出的那样,您main()没有在代码中的任何地方被调用。
您可以main()在模块的顶层调用您的函数,如下所示:
import ctypes
import os
(your functions)
main()
Run Code Online (Sandbox Code Playgroud)
但是,当您直接使用python命令运行此命令或从其他地方导入此模块时,将评估顶层的所有内容。假设您的脚本的文件名是,callee.py并且您正在编写另一个脚本caller.py,如下所示:
import callee
Run Code Online (Sandbox Code Playgroud)
然后callee.py将评估顶级的所有语句,包括main(). 如果这不是您的意图,您可以通过检查__name__变量的值来检查您的脚本是否直接从命令行调用。
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
如果你的脚本是直接从命令行调用的值__name__会__main__。否则它将是模块的名称。在这种情况下,callee。
| 归档时间: |
|
| 查看次数: |
2885 次 |
| 最近记录: |