开始在 Windows 上将 Python 用于脚本和自动化

2023-09-17 19:46:12

 🎬 岸边的风:个人主页

 🔥 个人专栏 :《 VUE 》 《 javaScript 》

⛺️ 生活的理想,就是为了理想的生活 !

在这里插入图片描述

目录

设置开发环境

安装 Python

安装 Visual Studio Code

安装 Microsoft Python 扩展

在 VS Code 中打开集成 PowerShell 终端

安装 Git(可选)

用于显示文件系统目录结构的示例脚本

用于修改目录中的所有文件的示例脚本


下面是有关在 Windows 上设置开发人员环境和开始将 Python 用于脚本和自动执行文件系统操作的分步指南。

 备注

本文介绍如何通过以 Windows 为中心的方法设置环境以使用 Python 中的一些有用库,这些库可以跨平台自动执行任务(如搜索文件系统、访问 Internet、分析文件类型等)。 对于特定于 Windows 的操作,请查看 ctypes(适用于 Python 的兼容 C 的外部函数库)、winreg(向 Python 公开 Windows 注册表 API 的函数)和 Python/WinRT(可用于从 Python 访问 Windows 运行时 API)。

设置开发环境

使用 Python 编写执行文件系统操作的脚本时,建议从 Microsoft Store 安装 Python。 通过 Microsoft Store 安装会使用基本 Python3 解释器,但会为当前用户设置 PATH 设置(避免需要管理员访问权限),以及提供自动更新。

如果在 Windows 上将 Python 用于 Web 开发,建议使用适用于 Linux 的 Windows 子系统进行不同设置。 在我们的指南中可找到演练:开始在 Windows 上将 Python 用于 Web 开发。 如果不熟悉 Python,请尝试我们的指南:开始在 Windows 上使用 Python(初学者)。 对于某些高级方案(如需要访问/修改 Python 的已安装文件、创建二进制文件的副本或直接使用 Python DLL),可能需要考虑直接从 python.org 下载特定 Python 版本或考虑安装替代实现,如 Anaconda、Jython、PyPy、WinPython、IronPython 等。建议仅当你是更高级的 Python 程序员并且有特定原因需要选择替代实现时才使用此方法。

安装 Python

使用 Microsoft Store 安装 Python:

  1. 转到“开始” 菜单(左下方 Windows 图标),输入“Microsoft Store”,选择用于打开应用商店的链接。

  2. 应用商店打开后,从右上方菜单中选择“搜索”,然后输入“Python”。 在“应用”下,从结果中选择要使用的 Python 版本。 我们建议使用最新的版本,除非有理由不这样做(例如与计划处理的预先存在项目上使用的版本保持一致)。 确定要安装的版本后,请选择“获取”。

  3. Python 完成下载和安装过程后,使用“开始”菜单(左下方 Windows 图标)打开 Windows PowerShell。 PowerShell 打开后,输入 Python --version 以确认已在计算机上安装了 Python3。

  4. Python 的 Microsoft Store 安装包括 pip (标准包管理器)。 通过 pip 可以安装和管理不属于 Python 标准库的其他包。 若要确认还可使用 pip 安装和管理包,请输入 pip --version

安装 Visual Studio Code

通过使用 VS Code 作为文本编辑器/集成开发环境 (IDE),可以利用 IntelliSense(代码完成辅助)、Linting(可帮助避免在代码中发生错误)、调试支持(可帮助在运行代码之后查找代码中的错误)、代码片段(小型可重用代码块的模板)以及单元测试(使用不同类型的输入测试代码的接口)。

下载适用于 Windows 的 VS Code,并按照安装说明进行操作:https://code.visualstudio.com

安装 Microsoft Python 扩展

需要安装 Microsoft Python 扩展,才能利用 VS Code 支持功能。 了解详细信息

  1. 通过输入 Ctrl+Shift+X 来打开 VS Code 扩展窗口(或使用菜单导航到“视图” >“扩展” )。

  2. 在顶部的“在市场中搜索扩展”框中,输入:“Python”。

  3. 找到“Python (ms-python.python) by Microsoft” 扩展,然后选择绿色的“安装” 按钮。

在 VS Code 中打开集成 PowerShell 终端

VS Code 包含一个内置终端,使你可以使用 PowerShell 打开 Python 命令行,从而在代码编辑器与命令行之间建立无缝工作流。

  1. 在 VS Code 中打开终端,选择“视图” >“终端” ,或者使用快捷方式 Ctrl+' (使用反撇号字符)。

     备注

    默认终端应为 PowerShell,但如果需要更改它,请使用 Ctrl+Shift+P 进入命令面板。 输入“终端: 选择默认 Shell”,会显示终端选项列表,其中包含 PowerShell、命令提示符、WSL 等。选择要使用的终端,然后输入 Ctrl+Shift+' (使用反撇号)以创建新终端。

  2. 在 VS Code 终端中,通过输入以下内容来打开 Python:python

  3. 通过输入以下内容来尝试使用 Python 解释器:print("Hello World")。 Python 会返回语句“Hello World”。

    Python command line in VS Code

  4. 若要退出 Python,可以输入 exit()quit() 或选择 Ctrl-Z。

安装 Git(可选)

如果计划与其他人协作处理 Python 代码,或是在开放源代码站点(例如 GitHub)上托管项目,则 VS Code 支持使用 Git 进行版本控制。 VS Code 中的“源代码管理”选项卡可跟踪所有更改,并直接在 UI 中内置了常见 Git 命令(add、commit、push、pull)。 需要先安装 Git,以便为“源代码管理”面板提供支持。

  1. 从 git-scm 网站下载并安装适用于 Windows 的 Git。

  2. 其中包含了一个安装向导,该向导会询问一系列有关 Git 安装设置的问题。 建议使用所有默认设置,除非有特定原因需要更改某些设置。

  3. 如果以前从未使用过 Git,则 GitHub 指南可以帮助入门。

用于显示文件系统目录结构的示例脚本

常见系统管理任务可能需要花费大量时间,但是借助 Python 脚本,可以自动执行这些任务,从而完全不会占用任何时间。 例如,Python 可以读取计算机文件系统的内容并执行各种操作(如打印文件和目录的大纲、将文件夹从一个目录移动到另一个目录或是重命名上百个文件)。 通常,如果手动执行这类任务,则它们可能会占用大量时间。 请改用 Python 脚本!

我们从一个简单脚本开始,该脚本会遍历目录树并显示目录结构。

  1. 使用“开始” "菜单(左下方 Windows 图标)打开 PowerShell。

  2. 为项目创建目录:mkdir python-scripts,然后打开该目录:cd python-scripts

  3. 创建一些目录以用于我们的示例脚本:

    PowerShell复制

    mkdir food, food\fruits, food\fruits\apples, food\fruits\oranges, food\vegetables
    
  4. 在这些目录中创建一些文件以用于我们的脚本:

    PowerShell复制

    new-item food\fruits\banana.txt, food\fruits\strawberry.txt, food\fruits\blueberry.txt, food\fruits\apples\honeycrisp.txt, food\fruits\oranges\mandarin.txt, food\vegetables\carrot.txt
    
  5. 在 python-scripts 目录中创建新 python 文件:

    PowerShell复制

    mkdir src
    new-item src\list-directory-contents.py
    
  6. 通过输入以下内容在 VS Code 中打开项目:code .

  7. 通过输入 Ctrl+Shift+E 打开 VS Code 文件资源管理器窗口(或使用菜单导航到“视图” >“资源管理器” ),然后选择刚刚创建的 list-directory-contents.py 文件。 Microsoft Python 扩展会自动加载 Python 解释器。 可以在 VS Code 窗口底部查看已加载的解释器。

     备注

    Python 是一种解释型语言,这意味着它会充当虚拟机,从而模拟物理计算机。 可以使用不同类型的 Python 解释器:Python 2、Python 3、Anaconda、PyPy 等。若要运行 Python 代码并获取 Python IntelliSense,必须向 VS Code 告知要使用的解释器。 建议坚持使用 VS Code 默认选择的解释器(在我们的示例中为 Python 3),除非有特定原因需要选择其他解释器。 若要更改 Python 解释器,请选择当前显示在 VS Code 窗口底部蓝色栏中的解释器,或打开“命令面板” (Ctrl+Shift+P),然后输入命令“Python: 选择解释器”。 这会显示当前已安装的 Python 解释器列表。 详细了解如何配置 Python 环境

    Select Python interpreter in VS Code

  8. 将以下代码粘贴到 list-directory-contents.py 文件中,然后选择“保存” :

    Python复制

    import os
    
    root = os.path.join('..', 'food')
    for directory, subdir_list, file_list in os.walk(root):
        print('Directory:', directory)
        for name in subdir_list:
            print('Subdirectory:', name)
        for name in file_list:
            print('File:', name)
        print()
    
  9. 打开 VS Code 集成终端(Ctrl+' ,使用反撇号字符),然后进入刚刚在其中保存 Python 脚本的 src 目录:

    PowerShell复制

    cd src
    
  10. 使用以下命令在 PowerShell 中运行脚本:

    PowerShell复制

    python3 .\list-directory-contents.py
    

    你应会看到如下所示的输出:

    PowerShell复制

    Directory: ..\food
    Subdirectory: fruits
    Subdirectory: vegetables
    
    Directory: ..\food\fruits
    Subdirectory: apples
    Subdirectory: oranges
    File: banana.txt
    File: blueberry.txt
    File: strawberry.txt
    
    Directory: ..\food\fruits\apples
    File: honeycrisp.txt
    
    Directory: ..\food\fruits\oranges
    File: mandarin.txt
    
    Directory: ..\food\vegetables
    File: carrot.txt
    
  11. 通过直接在 PowerShell 终端中输入以下命令,使用 Python 将文件系统目录输出打印到自己的文本文件中:python3 list-directory-contents.py > food-directory.txt

恭喜! 你刚刚编写了一个自动系统管理脚本,该脚本会读取你创建的目录和文件,并使用 Python 显示目录结构并打印到自己的文本文件中。

 备注

如果无法从 Microsoft Store 安装 Python 3,请查看此问题,通过示例了解如何处理此示例脚本的路径。

用于修改目录中的所有文件的示例脚本

此示例使用刚刚创建的文件和目录,通过将文件的上次修改日期添加到文件名开头来重命名每个文件。

  1. 在 python-scripts 目录内的 src 文件夹中,为脚本创建新 Python 文件:

    PowerShell复制

    new-item update-filenames.py
    
  2. 打开 update-filenames.py 文件,将以下代码粘贴到该文件中,并保存它:

     备注

    os.getmtime 会返回以时钟周期表示的时间戳(这不容易理解)。 它必须先转换为标准日期时间字符串。

    Python复制

    import datetime
    import os
    
    root = os.path.join('..', 'food')
    for directory, subdir_list, file_list in os.walk(root):
        for name in file_list:
            source_name = os.path.join(directory, name)
            timestamp = os.path.getmtime(source_name)
            modified_date = str(datetime.datetime.fromtimestamp(timestamp)).replace(':', '.')
            target_name = os.path.join(directory, f'{modified_date}_{name}')
    
            print(f'Renaming: {source_name} to: {target_name}')
    
            os.rename(source_name, target_name)
    
  3. 测试 update-filenames.py 脚本,具体方式是运行它:python3 update-filenames.py,然后再次运行 list-directory-contents.py 脚本:python3 list-directory-contents.py

  4. 你应该会看到如下所示的输出:

    PowerShell复制

    Renaming: ..\food\fruits\banana.txt to: ..\food\fruits\2019-07-18 12.24.46.385185_banana.txt
    Renaming: ..\food\fruits\blueberry.txt to: ..\food\fruits\2019-07-18 12.24.46.391170_blueberry.txt
    Renaming: ..\food\fruits\strawberry.txt to: ..\food\fruits\2019-07-18 12.24.46.389174_strawberry.txt
    Renaming: ..\food\fruits\apples\honeycrisp.txt to: ..\food\fruits\apples\2019-07-18 12.24.46.395160_honeycrisp.txt
    Renaming: ..\food\fruits\oranges\mandarin.txt to: ..\food\fruits\oranges\2019-07-18 12.24.46.398151_mandarin.txt
    Renaming: ..\food\vegetables\carrot.txt to: ..\food\vegetables\2019-07-18 12.24.46.402496_carrot.txt
    
    PS C:\src\python-scripting\src> python3 .\list-directory-contents.py
    ..\food\
    Directory: ..\food
    Subdirectory: fruits
    Subdirectory: vegetables
    
    Directory: ..\food\fruits
    Subdirectory: apples
    Subdirectory: oranges
    File: 2019-07-18 12.24.46.385185_banana.txt
    File: 2019-07-18 12.24.46.389174_strawberry.txt
    File: 2019-07-18 12.24.46.391170_blueberry.txt
    
    Directory: ..\food\fruits\apples
    File: 2019-07-18 12.24.46.395160_honeycrisp.txt
    
    Directory: ..\food\fruits\oranges
    File: 2019-07-18 12.24.46.398151_mandarin.txt
    
    Directory: ..\food\vegetables
    File: 2019-07-18 12.24.46.402496_carrot.txt
    
    
  5. 通过直接在 PowerShell 终端中输入以下命令,使用 Python 将前面追加了最近修改时间戳的新文件系统目录名称打印到自己的文本文件中:python3 list-directory-contents.py > food-directory-last-modified.txt

希望你了解了一些有关使用 Python 脚本自动执行基本系统管理任务的有趣内容。 当然,还有很多内容需要知道,但我们希望可以使你有一个良好的开端。 我们在下面共享了几个其他资源,可用于继续学习。

更多推荐

安卓页面绘制流程(3)Window注册

前言:本文属于安卓页面绘制流程的第3篇,主要介绍应用是如何把APP侧的Window向system进行注册的。主要分为2大块:第一块,APP侧在resume周期时向系统侧申请绑定。第二块,系统侧收到请求后处理绑定的流程。一.APP侧Window注册在上一篇文章中,我们已经讲过,在Activity的create周期内,其所

什么是Vue的自定义指令(custom directives)?如何自定义指令?

聚沙成塔·每天进步一点点⭐专栏简介⭐Vue.js的自定义指令⭐示例⭐写在最后⭐专栏简介前端入门之旅:探索Web开发的奇妙世界欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的

Learn Prompt-Prompt 高级技巧:MetaGPT

MetaGPT是一项引起广泛关注的研究成果,它引入了一个将人工工作流程与多智能体协作无缝集成的框架。通过将标准化操作(SOP)程序编码为提示,MetaGPT确保解决问题时采用结构化方法,从而减少出错的可能性。🎉开始阅读前,如果你对其他文章感兴趣,可以到欢迎页关注我们!「卡尔的AI沃茨」开源中文社区实时获得后续的更新和

网络安全进阶学习第二十课——CTF之文件操作与隐写

文章目录一、文件类型识别1、File命令2、Winhex3、文件头残缺/错误二、文件分离操作1、Binwalk工具2、Foremost3、dd4、Winhex三、文件合并操作1、Linux下的文件合并2、Windowsa下的文件合并四、文件内容隐写Winhex五、图片文件隐写1、图片混合2、LSB(最低有效位Least

PLC串口通讯和通讯接口知识汇总

在使用PLC的时候会接触到很多的通讯协议以及通讯接口,最基本的PLC串口通讯和基本的通讯接口你都了解吗?一、什么是串口通讯?串口是一种接口标准,是计算机上一种非常通用设备通信的协议。它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。典型的串口通讯标准常见有如下三种。EIARS232(通常简称“RS232”):

【C++】命名空间 namespace 与 标准流 iostream ( 命名空间概念简介 | 命名空间定义 | 命名空间使用 | iostream 中的命名空间分析 )

文章目录一、命名空间namespace1、命名空间基本概念2、名称概念4、C语言的命名空间3、命名空间避免标识符冲突二、命名空间定义1、命名空间基本概念2、命名空间定义语法3、代码示例-命名空间定义使用三、命名空间使用1、命名空间默认访问方式2、使用命名空间3、使用默认的命名空间4、代码示例-使用命名空间四、标准流io

MySQL学习系列(11)-每天学习10个知识

目录1.数据库设计的关键因素2.使用存储过程和函数来提高性能和可重用性3.MySQL性能优化4.使用视图简化查询和提供数据安全性5.数据库备份和恢复策略的重要性和实践经验6.在分布式系统中保证数据一致性和可用性7.理解MySQL的复制和其在实际应用中的作用8.使用游标进行分页查询和遍历查询结果9.使用窗口函数10.数据

Redis 面试常见问答

本文出自:https://thinkinjava.cn作者:莫那鲁道1.什么是缓存雪崩?怎么解决?一般而言,我们会利用缓存来缓冲对数据库的冲击,假如缓存无法正常工作,所有的请求便会直接发送至数据库,进而导致数据库崩溃,从而导致整个系统崩溃。如何解决呢?2种策略(同时使用):对缓存做高可用,防止缓存宕机使用断路器,如果缓

深入学习 Redis - 分布式锁底层实现原理,以及实际应用

目录一、Redis分布式锁1.1、什么是分布式锁1.2、分布式锁的基础实现1.2.1、引入场景1.2.2、基础实现思想1.2.3、引入setnx1.3、引入过期时间1.4、引入校验id1.5、引入lua脚本1.5.1、引入lua脚本的原因1.5.2、lua脚本介绍1.6、过期时间续约问题(看门狗WatchDog)1.7

十四、流式编程(2)

本章概要中间操作跟踪和调试流元素排序移除元素应用函数到元素在map()中组合流中间操作中间操作用于从一个流中获取对象,并将对象作为另一个流从后端输出,以连接到其他操作。跟踪和调试peek()操作的目的是帮助调试。它允许你无修改地查看流中的元素。代码示例:Peeking.javaclassPeeking{publicst

Docker概念通讲

目录什么是Docker?Docker的应用场景有哪些?Docker的优点有哪些?Docker与虚拟机的区别是什么?Docker的三大核心是什么?如何快速安装Docker?如何修改Docker的存储位置?Docker镜像常用管理有哪些?如何创建Docker容器?Docker在后台的标准运行过程是什么?Docker网络模式

热文推荐