在 Python 中执行 Directory/Zip 文件

360影视 2025-01-24 13:15 2

摘要:在 Python 中执行目录非常简单。我们所要做的就是确保该目录中存在一个 __main__.py 文件。通过一个例子来理解它。这里有一个文件__main__.py,其中包含以下内容:

Python 为提供了直接执行目录或 zip 文件的能力。这在 Python 社区中并不广为人知。因此,这篇博文旨在揭示这一点

在 Python 中执行目录非常简单。我们所要做的就是确保该目录中存在一个 __main__.py 文件。通过一个例子来理解它。这里有一个文件__main__.py,其中包含以下内容:

# file __main__.pyname = "Sarah"age = 27print("Hello {}!".format(name))

现在,假设目录结构是这样的。

test/ __main__.py

执行 __main__.py 文件或 test 目录将产生相同的结果。

roark:~/example/test$ python __main__.pyHello Sarah!roark:~/example$ python test # Run package as mainHello Sarah!

这很容易。如果存在 __main__.py,则可以将目录作为脚本调用。因此,__main__.py 指定包的入口点。

Python 甚至可以类似地执行 zip 文件。在尝试之前,让先以 Pythonic 方式创建一个 zip 文件。
可以使用 standard 库中的 zipfile 模块从 shell 中使用 Python 实现这一点。语法如下:

python -m zipfile -c zipname.zip sourcedir/*.py-m option runs a library as module (As a sidenote it comes very handy while installing packages using pip. We should always preferpython -m pip install

instead of pip install

Since the former explictly calls out the Python verison where I want my package to be installed by binding Python with it's corresponding pip module.)-c is create file option

其中 zipname.zip 是我们想要的目标文件的名称,sourceDir 是源代码目录的路径。-m 选项将库模块作为脚本运行。在我们的示例中尝试上述命令:

roark:~/example$ lstest roark:~/example$ python -m zipfile -c test.zip test/*.pyroark:~/example$ lstest test.ziproark:~/example$ python test.zipHello Sarah!

很酷。因此,Python 还可以将 zip 文件作为独立脚本执行。

更进一步,我们甚至可以在 zip 文件前面加上 shebang (#!) 以使其成为可执行文件并直接运行它。下面的代码段突出显示了相同的内容。

roark:~/example$ lstest test.ziproark:~/example$ echo '#!/usr/bin/env python3' > test_execroark:~/example$ cat test.zip >> test_execroark:~/example$ chmod +x test_execroark:~/example$ lstest test.zip test_execroark:~/example$ ./test_execHello Sarah!

们让可执行文件运行并给出所需的输出。
注意:确保将 Python 二进制文件所在的位置放在正确的位置。如果 Python 直接安装在系统中,那么 shebang 很有可能是 #!/usr/bin/python3

总而言之,我们了解到,Python 不仅提供将目录作为脚本调用,甚至还提供 zip 文件,前提是我们有__main__.py文件作为执行的入口点。

来源:自由坦荡的湖泊AI

相关推荐