当前位置: 首页 > news >正文

Python 自动化指南(繁琐工作自动化)第二版:附录 B:运行程序

原文:https://automateboringuff.com/2e/appendixb/

Image

如果您在 Mu 中打开了一个程序,运行它只需按 F5 或单击窗口顶部的运行按钮。这是一种在编写程序的同时运行程序的简单方法,但是打开 Mu 来运行你完成的程序可能是一种负担。根据您使用的操作系统,有更方便的方法来执行 Python 脚本。

从终端窗口运行程序

当您打开终端窗口(如 Windows 上的命令提示符或 MacOS 和 Linux 上的终端)时,您会看到一个几乎空白的窗口,您可以在其中输入文本命令。你可以从终端运行你的程序,但是如果你不习惯,通过终端(也称为命令行)使用你的计算机可能会令人生畏:不像图形用户界面,它不提供你应该做什么的提示。

在 Windows 上打开一个终端窗口,点击开始按钮,进入命令提示符,按进入。在 MacOS 上,点击右上角的 Spotlight 图标,键入终端,按Enter。在 Ubuntu Linux 上,可以按WIN键调出 Dash,键入终端,按Enter。键盘快捷键CTRL - ALT -T 也会在 Ubuntu 上打开一个终端窗口。

就像交互 Shell 有>>>提示一样,终端会显示提示让你输入命令。在 Windows 上,它将是您当前所在文件夹的完整路径:

C:\Users\Al>your commands go here

在 MacOS 上,提示符显示您的电脑名称、冒号、当前工作目录(您的个人文件夹简称为~)和您的用户名,后面是美元符号($):

Als-MacBook-Pro:~ al$ your commands go here

在 Ubuntu Linux 上,提示符类似于 MacOS,只是它以用户名和一个@符号开始:

al@al-VirtualBox:~$ your commands go here

可以定制这些提示,但这超出了本书的范围。

当你输入一个命令时,比如 Windows 上的python或者 MacOS 和 Linux 上的python3,终端会在你当前所在的文件夹中查找一个同名的程序。如果没有找到,它将检查列在PATH环境变量中的文件夹。你可以将环境变量视为整个操作系统的变量。它们将包含一些系统设置。要查看存储在PATH环境变量中的值,在 Windows 上运行echo %PATH%,在 MacOS 和 Linux 上运行echo $PATH。这里有一个 MacOS 上的例子:

Als-MacBook-Pro:~ al$ echo $PATH
/Library/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/bin:/usr/
bin:/bin:/usr/sbin:/sbin

在 MacOS 上,python3程序文件位于/Library/Frameworks/python . framework/Versions/3.7/bin文件夹中,不用进入/Library/Frameworks/Python.framework/Versions/3.7/bin/python3或者先切换到那个文件夹运行;你可以从任何文件夹输入python3,终端会在PATH环境变量的文件夹中找到它。将一个程序的文件夹添加到PATH环境变量是一个方便的快捷方式。

如果你想运行.py程序,必须输入python(或python3),后跟py文件名。这将运行 Python,然后 Python 将运行它在那个py文件中找到的代码。Python 程序完成后,您将返回到终端提示符。例如,在 Windows 上,一个简单的“你好,世界!”程序应该是这样的:

Microsoft Windows [Version 10.0.17134.648]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Users\Al>python hello.py
Hello, world!
C:\Users\Al>

不带任何文件名运行python(或python3)将导致 Python 启动交互式 shell。

在 Windows 上运行 Python 程序

还有其他一些方法可以在 Windows 上运行 Python 程序。不用打开终端窗口运行你的 Python 脚本,你可以按WIN+R打开运行对话框,输入py C:\path\to\your\PythonScript.py,如图 B-1 所示。py.exe程序安装在C:\Windows\py.exe,已经在PATH环境变量中,键入.exe文件扩展名是运行程序时可选的。

image

图 B-1:Windows 上的运行对话框

这种方法的缺点是您必须输入脚本的完整路径。此外,虽然从对话框中运行 Python 脚本会打开一个新的终端窗口来显示其输出,但该窗口会在程序结束时自动关闭,您可能会错过一些输出。

您可以通过创建批处理脚本来解决这些问题,它是一个带有bat文件扩展名的小文本文件,可以运行多个终端命令,很像 MacOS 和 Linux 中的 Shell 脚本。您可以使用文本编辑器(如记事本)来创建这些文件。

要创建批处理文件,请创建一个包含单行的新文本文件,如下所示:

@py.exe C:\path\to\your\pythonScript.py %*
@pause

用你自己程序的绝对路径替换这个路径,并用bat文件扩展名保存这个文件 (例如pythonScript.bat )。每个命令开头的@符号防止它显示在终端窗口中,并且%*将在批处理文件名后输入的任何命令行参数转发给 Python 脚本。Python 脚本依次读取sys.argv列表中的命令行参数。这个批处理文件将使您不必在每次想要运行 Python 程序时都键入完整的绝对路径。另外,@pause会在 Python 脚本的结尾加上"Press any key to continue...",防止程序的窗口消失过快。我建议您放置所有批处理和py文件放在一个已经存在于PATH环境变量中的文件夹中,比如C:\Users\<USERNAME>

通过设置批处理文件来运行 Python 脚本,您无需打开终端窗口并输入 Python 脚本的完整文件路径和名称。相反,只需按下WIN+R,输入pythonScript(不需要完整的pythonScript.bat名称),然后按下ENTER来运行您的脚本。

在 MacOS 上运行 Python 程序

在 MacOS 上,可以创建一个 Shell 脚本来运行 Python 脚本,方法是使用.command件扩展名。在文本编辑器(如“文本编辑”)中创建新文件,并添加以下内容:

#!/usr/bin/env bash
python3 /path/to/your/pythonScript.py

在你个人文件夹(比如我的电脑上是/Users/al)中使用.command文件扩展名保存文件。在终端窗口中,通过运行chmod u+x yourScript.command使这个 Shell 脚本可执行。现在,您将能够单击 Spotlight 图标(或按下Cmd+Space)并输入yourScript.command来运行 Shell 脚本,这将依次运行您的 Python 脚本。

在 Ubuntu Linux 上运行 Python 程序

在 Ubuntu Linux 中从 Dash 菜单运行 Python 脚本需要大量的设置。假设我们有一个/home/al/example.py脚本(您的 Python 脚本可能在不同的文件夹中,有不同的文件名),我们想从 Dash 运行它。首先,使用文本编辑器如gedit创建一个包含以下内容的新文件:

[Desktop Entry]
Name=example.py
Exec=gnome-terminal -- /home/al/example.sh
Type=Application
Categories=GTK;GNOME;Utility;

将该文件保存到/home/al/local/share/application文件夹中(如果你的文本编辑器没有显示example.desktop,用自己的用户名替换al)。本地文件夹(因为以句点开头的文件夹被认为是隐藏的),您可能需要将其保存到您的个人文件夹(如/home/al )中,并打开一个终端窗口以使用mv /home/al/example.desktop /home/al/.local/share/applications命令移动该文件。

example.desktop文件在/home/al/local/share/applications文件夹,你可以按下键盘上的 Windows 键调出 Dash 并输入example.py (或者你为Name字段输入的任何内容)。这将打开一个新的终端窗口(具体来说,是运行/home/al/example.sh Shell 脚本的gnome-terminal程序),我们接下来将创建这个脚本。

在文本编辑器中,创建一个包含以下内容的新文件:

#!/usr/bin/env bash
python3 /home/al/example.py
bash

将这个文件保存到/home/al/example.sh。这是一个 Shell 脚本:运行一系列终端命令的脚本。这个 Shell 脚本将运行我们的 Python 脚本/home/al/example.py,然后运行 bash Shell 程序。如果最后一行没有 bash 命令,Python 脚本一完成,终端窗口就会关闭,您将错过print()函数调用在屏幕上显示的任何文本。

您需要向这个 Shell 脚本添加执行权限,因此从终端窗口运行以下命令:

al@ubuntu:~$ chmod u+x /home/al/example.sh

设置好example.desktopexample.sh文件后,您现在可以通过按 Windows 键并输入example.py (或者您在example.desktop文件的Name字段中输入的任何名称)来运行example.py脚本。

运行禁用断言的 Python 程序

您可以在 Python 程序中禁用assert语句,以获得轻微的性能提升。当从终端运行 Python 时,在pythonpython3之后和py文件名称之前包含-O开关。这将运行您的程序的优化版本,跳过断言检查。

相关文章:

Python 自动化指南(繁琐工作自动化)第二版:附录 B:运行程序

原文&#xff1a;https://automateboringuff.com/2e/appendixb/ 如果您在 Mu 中打开了一个程序&#xff0c;运行它只需按 F5 或单击窗口顶部的运行按钮。这是一种在编写程序的同时运行程序的简单方法&#xff0c;但是打开 Mu 来运行你完成的程序可能是一种负担。根据您使用的操…...

自然语言处理实战项目2-文本关键词抽取和关键词分值评估

大家好&#xff0c;我是微学AI&#xff0c;今天给大家带来自然语言处理实战项目2-文本关键词抽取和关键词分值评估。关键词抽取是自然语言处理中的重要任务&#xff0c;也是基础任务。 一、关键词抽取传统方法 1.基于统计的方法&#xff1a; 基于统计的方法是通过对一组文本…...

软件测试面试,项目经验板块如何答?初中高级测试工程师都问什么?

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 项目经验相关的问题…...

软件测试之测试用例的设计

对于测试工作而言&#xff0c;最重要的无疑就是测试用例的设计。好的测试用例可以帮助测试人员更好更快地发现软件中的错误&#xff0c;对于提高产品质量意义重大。本文就是针对测试用例的设计方法。 文章目录测试用例的基本要素测试用例的设计设计测试用例的具体方法等价类划分…...

MySQL安装与配置(保姆级教程)

MySQL安装 我们进入Mysql的官网进行下载MySQL Community Edition(GPL),这里我们以8.0.32.0版本为例&#xff0c;点击下面进行下载&#xff1a; MySQL Community Edition(GPL) 此时我们选择下面一个32位(64位的系统也选他)&#xff0c;上面那个是在线安装等待时间比较长 当然我们…...

MATLAB算法实战应用案例精讲-【元启发式算法】随机蛙跳跃算法(SFLA)(附matlab代码实现)

目录 前言 知识储备 多目标优化问题 多目标元启发式优化方法 算法原理 数...

内网穿透:远程访问内网IP中的电脑

需求&#xff1a;家里电脑在路由器内网中&#xff0c;能连外网。想在外地时能ssh&#xff08;也即vscode&#xff09;访问家里的电脑。 家里电脑系统&#xff1a;win11&#xff08;Ubuntu流程也一模一样&#xff09; 具体流程 家里电脑下载【花生壳】内网穿透软件并登录&#…...

day4 selenium爬取数据总结

day4 selenium爬取数据 一、selenium基本操作 导入相关模块&#xff1a; from selenium.webdriver import Chrome(一)、创建浏览器对象 b Chrome()(二)、打开网页&#xff08;需要爬取哪个页面的数据就打开该页面对应的网页地址&#xff09; 案例&#xff1a;爬取豆瓣电影…...

信息收集之WAF绕过

信息收集之WAF绕过前言一、工具进行目录扫描1. 工具的下载2. 工具的使用二、Python代码进行目录扫描前言 对于web安全无WAF的信息收集&#xff0c;大家可以查看如下链接的文章&#xff1a; web安全之信息收集 对于有WAF信息收集&#xff0c;看如下所示&#xff1a;&#xff08;…...

从数据到智慧,TOOM舆情监测系统让你的决策更加精准!

当今社会信息化程度日益提高&#xff0c;网络平台已成为人们获取最新信息的主要途径&#xff0c;无论是个体还是组织、政府还是企业&#xff0c;都需要通过各种手段及时了解社会舆情&#xff0c;把握市场动态&#xff0c;调整经营策略。而舆情监测系统无疑是这些手段中最为有效…...

ChatGPT中文版网页插件-如何体验chatGPT

ChatGPT中文版网页插件 目前&#xff0c;OpenAI的ChatGPT并没有官方提供中文版的网页插件&#xff0c;但是&#xff0c;一些第三方网站和开发者已经开始提供一些针对中文的自然语言处理和对话机器人服务。以下是其中一些例子&#xff1a; 问答机器人&#xff1a; 像小蛮腰和小…...

Docker的网络模式

Docker常见的几种网络模式 docker network ls 查看使用了哪些网络 [rootcentos8-nat-168-182-152 ~]# docker network ls NETWORK ID NAME DRIVER SCOPE c0184302f6a8 bridge bridge local 420492e04276 host host local …...

基于vue3.2、three实现地图在地图加载

基于vue3.2、three实现地图在地图加载code效果预览地址code 在这里插入代码片 import { ref, onMounted } from "vue"import * as THREE from "three"; import Earth from "./textures/Earth.png" import EarthSpec from "./textures/Eart…...

【C++】---优先级队列 仿函数

文章目录优先级队列介绍优先级队列使用仿函数优先级队列模拟实现优先级队列介绍 优先队列是一种容器适配器 &#xff0c;它的底层实现是堆&#xff0c;虽然它的名字里面有队列&#xff0c;但它并没有队列先进先出的特性 优先级队列定义在头文件中&#xff0c;其模板参数有三个…...

图的遍历算法

图的遍历1.连通图的深度优先搜索1.1. 递归1.2.非递归2.连通图的广度优先遍历3. 非连通图的深度&#xff08;广度&#xff09;优先遍历1.连通图的深度优先搜索 算法思想&#xff1a;从图中某个顶点vi出发&#xff0c;访问此顶点&#xff0c;然后依次从v1的各个未被访问的邻接点…...

【蓝桥杯集训·每日一题】 AcWing 3996. 涂色

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴区间DPUnique函数一、题目 1、原题链接 3996. 涂色 2、题目描述 有 n 个砖块排成一排&#xff0c;从左到右编号为 1∼n。 其中&#xff0c;第 i 个砖块的初始颜色为 ci。 …...

人工智能中的Web端编程

Java是当前的主流编程语言之一&#xff0c;常年稳居TIOBE编程语言排行榜前五。Java的使用领域非常广泛&#xff0c;包括了桌面端编程、Web端编程、移动端编程等几乎所有的编程领域。Java是Web端编程使用最广泛的编程语言之一。要学习Web端编程&#xff0c;需要了解Java语言的知…...

jsp+mysql+J2EE校园自行车租赁系统cdA1A2程序

本系统的具体功能有以下六项&#xff1a; 1、用户信息管理模块&#xff1a;用户需要注册成为本网站的用户&#xff0c;同时修改自己的用户资料&#xff0c;在必要时修改自己的登陆密码。 2、车辆查询模块:用户可以根据自己的要求&#xff0c;按照不同的查询方式来查询自己想要的…...

当营养遇上肠道菌群:探究其对儿童健康的影响

谷禾健康 越来越多的证据表明&#xff0c;肠道菌群定植紊乱和微生物多样性减少与全球非传染性疾病 (NCD) 的增加有关。影响儿童和青少年的非传染性疾病包括肥胖及其相关合并症、自身免疫性疾病、过敏性疾病和哮喘。饮食变化也与非传染性疾病的发病机制有关&#xff0c;并且由于…...

vue尚品汇商城项目-day01【4.完成非路由组件Header与Footer业务】

文章目录4.完成非路由组件Header与Footer业务4.1使用组件的步骤&#xff08;非路由组件&#xff09;本人其他相关文章链接4.完成非路由组件Header与Footer业务 在咱们项目开发中&#xff0c;不在以HTML CSS 为主&#xff0c;主要搞业务、逻辑 开发项目的流程&#xff1a; (1)…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...