【Python脚本随手笔记】 --- 复制文件并修改权限

news2025/2/24 21:44:39

请添加图片描述

  • 💌 所属专栏:【Python脚本随手笔记】

  • 😀 作  者:我是夜阑的狗🐶

  • 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询!

  • 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘

文章目录

  • 前言
  • 一、文件复制
      •  1.copyfile()函数
  • 二、文件修改权限
      •  1.chmod()函数
      •  2.获取参数
  • 三、执行脚本
      •  1.shell脚本(liunx)
      •  2.bat脚本(window)
  • 总结
      •  1、自动化脚本:
      •  2、网络编程:
      •  3、数据分析和处理:
      •  4、网页开发:


前言

  大家好,又见面了,我是夜阑的狗🐶,本文是专栏【Python脚本随手笔记】专栏的第1篇文章;
  今天的需求是想通过 python 脚本对文件进行复制到另外一个文件夹,并对文件添加可执行权限(这里是对liunx系统的操作),最后同 shellbat 文件来运行 python 脚本;
  专栏地址:【Python脚本随手笔记】 , 此专栏是我是夜阑的狗对python脚本处理的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
  如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。


一、文件复制

  Python 脚本是使用Python编程语言编写的一段可执行的代码。Python 脚本可以执行特定的任务,自动化重复的工作,处理数据,创建和操作文件等等。

 1.copyfile()函数

  这里可以使用 Pythonshutil 模块中的 copyfile 函数来复制文件;

import shutil

# 指定源文件和目标文件路径
source_file = '"Q:/QC/test"'
target_file = '/mnt/q/QC/鸿蒙/鸿蒙编译加速脚本'

# 复制文件
shutil.copyfile(source_file, target_file)

二、文件修改权限

 1.chmod()函数

  然后使用 os 模块来执行 chmod +x 操作。

import os

# 修改文件权限为可执行
os.chmod(target_file, 0o755)

  根据前面两个函数就能满足我们的需求了,这里需要注意一点,我们最终结果是通过 shell 或者 bat 来运行 python 脚本,所以 python 脚本需要获取传递参数值。

 2.获取参数

  在 Python 脚本中,你可以使用 sys.argv 列表来获取传递的参数值。

#!/usr/bin/python3

import shutil
import sys
import os

def main():
    source_file = sys.argv[1]
    build_type = sys.argv[2]
    # 获取当前文件的绝对路径
    current_path = os.path.abspath(__file__)
    # 获取当前文件所在的目录
    if build_type == "window":
        current_directory = os.path.dirname(current_path)
        # current_directory = "Q:/QC/test"
    else:
        current_directory = os.path.dirname(current_path)
        # current_directory = "/mnt/q/QC/test"
    

    # 指定源文件和目标文件路径
    compile_source_file = f"{source_file}/compile.sh"
    build_source_file = f"{source_file}/qcbuild.py"

    compile_target_file = f"{current_directory}/compile.sh"
    build_target_file = f"{current_directory}/qcbuild.py"


    # 修改文件权限为可执行
    os.chmod(compile_source_file, 0o755)
    os.chmod(build_source_file, 0o755)

    # 复制文件
    shutil.copyfile(compile_source_file, compile_target_file)
    shutil.copyfile(build_source_file, build_target_file)


if __name__ == "__main__":
    sys.exit(main())

  注意,sys.argv 列表中的第一个元素是脚本的名称本身。因此,第一个参数的索引是 1,第二个参数的索引是 2,以此类推。
   #!/usr/bin/python3 告诉操作系统使用 /usr/bin/python3 作为解释器来运行该脚本。

三、执行脚本

 1.shell脚本(liunx)

  要在 Shell 脚本(.sh 文件)中运行 Python 文件并传递参数,可以使用以下命令:

#!/bin/bash

# 尽量要英文路径
arg1=/mnt/q/QC/鸿蒙BES/鸿蒙编译加速脚本
arg2=liunx

# 运行 Python 文件
python3 qcQuickBuild.py ${arg1} ${arg2}

  这将运行 Shell 脚本,并执行其中的 Python 命令来运行指定的 Python 文件。如果你的系统中默认的 Python 版本不是你想要使用的版本,可以使用完整的 Python 解释器路径替代 python 命令。

 2.bat脚本(window)

  要在批处理文件(.bat 文件)中获取 Windows 系统变量中的 Python 解释器路径,第一种可以使用 %PYTHONHOME% 环境变量来获取,第二种可以系统环境变量查询 python 配置的路径然后输入即可,这里本人用的第二种方法。

@echo off

REM 尽量英文路径
set arg1=Q:\QC
set arg2=window

REM 获取 Python 解释器路径
set python_path=C:\Users\JMFive\AppData\Local\Programs\Python\Python312\python.exe

REM 执行当前目录下的 Python 脚本
%python_path% "%~dp0\qcQuickBuild.py" %arg1% %arg2%

echo python_path: %python_path% : %~dp0

REM 检查错误级别码
if %errorlevel% equ 0 (
    echo Python SUCCESS
) else (
    echo Python FAIL
)

pause

  要在批处理文件(.bat 文件)中运行当前 Python 脚本并确定运行是否成功,可以使用错误级别码来判断。

  使用 if %errorlevel% equ 0 来检查上一条命令的错误级别码。如果错误级别码为 0,表示上一条命令执行成功;如果错误级别码非零,表示上一条命令执行失败。

  根据错误级别码的结果,可以通过 echo 命令输出相应的信息来确定 Python 脚本的运行结果。


总结

  Python脚本的应用范围非常广泛,常见的应用包括:

 1、自动化脚本:

  可以编写Python脚本来自动执行重复的任务,如文件处理、数据清洗等。

 2、网络编程:

  Python脚本可以用于编写网络服务、爬虫、API等。

 3、数据分析和处理:

  Python脚本在科学计算领域非常流行,可以处理和分析大量数据。

 4、网页开发:

  Python脚本可以用于开发网站和Web应用程序,使用框架如Django和Flask。

  总之,Python 脚本是一种强大而灵活的工具,可以帮助开发者快速实现各种功能。它的简洁性和易读性使得它成为学习编程的好选择,并被广泛应用于各个领域。

  感谢观看,如果有帮助到你,请给文章点个赞和收藏,让更多的人看到。🌹 🌹 🌹

在这里插入图片描述

  也欢迎你,关注我。👍 👍 👍

  原创不易,还希望各位大佬支持一下,你们的点赞、收藏和留言对我真的很重要!!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!

更多专栏订阅:

  • 😀 【LeetCode题解(持续更新中)】
  • 👑 【Python脚本笔记】
  • 🚝 【Java Web项目构建过程】
  • 💛 【数字图像处理】
  • 【JavaScript随手笔记】
  • 🤩 【大数据学习笔记(华为云)】
  • 🦄 【程序错误解决方法(建议收藏)】
  • 🚀 【软件安装教程】



订阅更多,你们将会看到更多的优质内容!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1528828.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HarmonyOS 通知意图

之前的文章 我们讲了 harmonyos 中的 基础和进度条通知 那么 今天 我们来说说 任何给通知添加意图 通知意图 简单说 就是 当我们点击某个通知 如下图 然后 就会拉起某个 应用 就例如说 我们某个微信好友发消息给我们 我们 点击系统通知 可以直接跳到你们的聊天界面 好 回到…

Vue+SpringBoot打造民宿预定管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用例设计2.2 功能设计2.2.1 租客角色2.2.2 房主角色2.2.3 系统管理员角色 三、系统展示四、核心代码4.1 查询民宿4.2 新增民宿4.3 新增民宿评价4.4 查询留言4.5 新增民宿订单 五、免责说明 一、摘要 1.1 项目介绍 基于…

VsCode中高效书写Vue3代码的插件

Vue-Official(原Volar) 就是原先的Volar,现已弃用。 Vue-Official 提供的功能: 语法高亮: Vue-Official 扩展可以为 Vue 单文件组件(.vue 文件)中的 HTML、CSS 和 JavaScript 部分提供语法高亮&#xff…

linux系统------------Mysql数据库

目录 一、数据库基本概念 1.1数据(Data) 1.2表 1.3数据库 1.4数据库管理系统(DBMS) 数据库管理系统DBMS原理 1.5数据库系统(DBS) 二、数据库发展史 1、第一代数据库 2、第二代数据库 3、第三代数据库 三、关系型数据库 3.1关系型数据库应用 3.2主流的…

Echo服务器学习__01(基础)

ASIO是一个跨平台,主要用于实现异步网络和其他一些底层I/O操作的C库 可以基于ASIO实现Echo服务端,在这之前,学习一些基础的知识和概念 ​ 1:IO多路复用 简单的来说,一个线程同时监听多个I/O事件就是I/O多路复用。任…

⭐北邮复试刷题1793. 好子数组的最大分数___(基于快排的划分思想/基于快排的划分思想的优化过程/基于贪心的双指针操作)__每日一题

Problem: 1793. 好子数组的最大分数 文章目录 思路Code: 思路 法一: 基于快排的划分思想 1.即开始为拿到数组全部 计算分数 后来对每次找到的min值的下标左右两侧进行划分 即将min去掉 从而可以构建出两个新数组; 2.对新数组继续计算分数 与前一次比较取最大 接着继续找到min值…

51、CR-GCN:EEG通道拓扑结构+脑功能连接捕获EEG通道关系,用于情感识别[我处理的是原始EEG数据哦]

文章: CR-GCN: Channel-Relationships-Based Graph Convolutional Network for EEG Emotion Recognition 单位: 上海大学计算机学院、上海工业计算机、喀什大学计算机学院。提出CR-GCN,使用GCN的邻接矩阵提取情感数据中的特征用于分类。 2…

云计算太卷了,腾讯云服务器一年61元起,2核2G3M配置

腾讯云服务器多少钱一年?61元一年起。2024年最新腾讯云服务器优惠价格表,腾讯云轻量2核2G3M服务器61元一年、2核2G4M服务器99元一年可买三年、2核4G5M服务器165元一年、3年756元、轻量4核8M12M服务器646元15个月、4核16G10M配置32元1个月、312元一年、8核…

Flutter开发入门——路由

什么是路由? 移动端应用开发中,路由技术是一个非常重要的组成部分。路由技术负责管理应用中各个页面之间的跳转、导航以及参数传递等关键功能。在移动端应用中,一个高效、易于维护的路由系统对于提高开发效率和用户体验具有重要意义。 Flut…

AndroidLinux GPIO控制方法

目录 1 GPIO整体架构 2 user space 层 gpio使用方法 2.1 sysfs控制方法 2.1.1 kernel版本区别 2.1.2 /sys/class/gpio 2.1.3 /sys/bug/gpio/devices 2.2 chardev控制方法 2.2.1 chardev 示例代码 2.2.2 示例代码主要步骤描述 2.2.3 include/linux/gpio.h 全部代码 2.3…

代码随想录算法训练营第四十三天|卡码网52. 携带研究材料(第七期模拟笔试)、518. 零钱兑换 II、377. 组合总和 Ⅳ

卡码网52. 携带研究材料(第七期模拟笔试) 刷题https://kamacoder.com/problempage.php?pid1052文章讲解https://programmercarl.com/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80%E5%AE%8C%E5%85%A8%E8%83%8C%E5%8C%85.…

STM32通信协议

STM32通信协议 STM32通信协议 STM32通信协议一、通信相关概念二、通信协议引脚作用三、通信方式四、采样方式五、电平信号六、通信对象 一、通信相关概念 通信接口 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 通信协议:制定…

sqlserver字段2按字段1分组后;合并字段2

效果 相同dzbm的mc通过‘;’合并 sqlserver语句 按字段dzbm分组,有相同dzbm的mc通过 ;合并成一个字段,其它字段都选择第一个 SELECT dzbm, STUFF((SELECT DISTINCT ; + mc FROM tablenameWHERE dzbm = p.dzbm FOR XML PATH()), 1

Json Web Token(JWT) 快速入门

推荐视频:【从零开始掌握JWT】 目录 第一章 会话跟踪 01 使用Cookie和Session,jsessionid 02 使用token 例子一:自定义token 例子二:使用redis存储token 第一章 会话跟踪 应用背景 :浏览器访问web应用&#xff…

Linux工具 - 强大的vim编辑器

~~~~ 前言vim是什么为什么有vimvim怎么用vim模式介绍模式切换命令模式(Normal mode)i/a/o 切换到插入模式: 切换到底行模式R 切换到替换模式光标移动删除文字复制撤销更改 插入模式(Insert mode)底行模式(last line mode)(需整理20240311)替换模式vim简单…

STP环路避免实验(思科)

华为设备参考:STP环路避免实验(华为) 一,技术简介 Spanning Tree Protocol(STP),即生成树协议,是一种数据链路层协议。主要作用是防止二层环路,并自适应网络变化和故障…

大势智慧与云世纪签署战略合作,实景三维赋能低空经济,泛测绘助力城市数据更新更高效

2024年《政府工作报告》提出“要大力推进现代化产业体系建设,加快发展新质生产力”、“积极打造商业航天、低空经济等新增长引擎”。 近日,武汉大势智慧科技有限公司(以下简称“大势智慧”)和青岛云世纪信息科技有限公司&#xf…

Portraiture2024中文版PS/LR专用智能磨皮插件

打造完美肤质,Portraiture PS/LR专用智能磨皮插件让你的照片焕发魅力 副标题:让你的照片告别粗糙皮肤和毛孔,展现自然细腻的肤质 在摄影后期处理中,给照片进行磨皮和肤质优化是一项必不可少的步骤。 而今天,我们为你带…

不偷看密码的超萌猫头鹰

页面结构 不偷看密码的超萌猫头鹰.css * {/* 初始化 */margin: 0;padding: 0; }body {/* 100%窗口高度 */height: 100vh;/* 弹性布局 居中 */display: flex;justify-content: center;align-items: center;/* 渐变背景 */background: linear-gradient(200deg, #72afd3, #96fbc4)…

分布式接口幂等性解析

一、概述 幂等性定义:用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。【同一操作指的是同一个浏览器,发送相同的请求】。 常见场景: 提交订单接口。返回提交结果时网络出现故障&am…