python指令生成脚本_生成命令行程序使用脚本

场景

最近工作中需要经常使用ffmpeg一类的命令行程序,为了避免过多重复操作,于是思考了下编写命令程序脚本的几种方式,包括c#,python,bat,powershell,shell。

C#

///

/// 使用 process 调用程序

/// 对指定视频转码

///

private static void Ffmpeg()

{

using (var p = new Process())

{

// 想要运行命令/程序名/程序绝对路径

// ffmpeg 已添加至 path

p.StartInfo.FileName = @"ffmpeg";

p.StartInfo.Arguments = "-i 1.mp4 -c:v libx264 -c:a aac -y 1.flv";

// true 就无法重定向输出或报错

// http://stackoverflow.com/questions/5255086/when-do-we-need-to-set-useshellexecute-to-true

p.StartInfo.UseShellExecute = false;

// ffmpeg 比较特殊,所有信息都从Error出

p.StartInfo.RedirectStandardError = true;

//p.StartInfo.RedirectStandardOutput = true;

p.Start();

using (var reader = p.StandardError)

{

while (!reader.EndOfStream)

Console.WriteLine(reader.ReadLine());

}

// 等待进程

p.WaitForExit();

}

}

python

python中可以使用fabric这个强大的工具,官方实现是使用python2,不过可使用pip install fabric3下载它的python3实现。(python3 下使用pip install fabric 也会正常下载,不过无法使用)

fabric 基础使用:

fabric中一个函数对应一个任务

文件名默认命名为fabfile,否者要使用-f file加载

使用 fab fun_name

fabfile.py:

from fabric.api import local

import json

def flv():

""" 获取视频长度 """

data = local('ffprobe -v quiet -print_format json -show_format -show_streams {0}'.format('1.flv'), capture=True)

info = json.loads(data.stdout)

print(info['format']['duration'])

fab flv

bat

批处理可以在win中快速编写简单命令脚本

REM @echo off

REM 批量切割视频

for %%c in (*.mp4) do (

ffmpeg -i %%c -ss 1 -t 1 -v quiet -y %%~nc.flv

)

powershell

powershell是win上类bash的shell程序,它提供了比批处理更强大的能力,并且现在已开源,微软也提供了官方的跨平台实现

第一次执行xx.ps1脚本,可能会报权限错误,在管理员权限的powershell中执行set-ExecutionPolicy RemoteSigned即可,参照张善友大神的博文

powershell的功能非常强大,同时也具有面向对象思维

# 获取当前目录所有flv时长

function FlvInfo ($video)

{

$pattern = ".*?(?\d+).*?"

$line = ffprobe -v quiet -print_format json -show_format $video | Where-Object {$_ -like '*size*'}

$result = $line -match $pattern

$size = $Matches.Size

Write-Output "$video size: $size"

}

foreach ($item in Get-ChildItem -Filter "*.flv*") {

FlvInfo $item.Name

}

shell

shell 是linux下的神兵利器,得益于WSL,我们在Win10下也能自由的使用Shell来完成日常操作

#!/bin/bash

for video in `ls |grep mp4`

do

ffmpeg -i $video -c:v copy -c:a copy -y ${video:0:-4}.flv

done

总结

使用c#,python等方式调用命令行程序可以简化批量处理大量重复、复杂和流程化的操作,而批处理,powershell,shell也可以快速简单地减少命令使用,总的来说要根据具体场景选择袭击喜欢的方式吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: nstall" 是用来做什么的? 这个命令是用来安装 Python 包的。在执行这个命令之前,需要先下载并解压缩 Python 包,然后进入包的根目录,执行命令即可安装该包。这个命令会将包安装到 Python 的 site-packages 目录下,以便在 Python使用该包。 ### 回答2: 指令 "python setup.py egg_i" 是用于在Python项目中创建和构建egg文件的命令。Egg文件是一种用于分发和安装Python软件包的文件格式。通过这个命令,我们可以将项目的源代码、依赖库和其他必要文件打包成一个egg文件,方便分享和安装。 这个命令的具体作用有以下几点: 1. 它会在当前目录执行setup.py文件,setup.py是一个用于配置Python安装和分发的脚本文件。 2. 使用egg_info选项,该命令会生成一个dist文件夹,并在该文件夹中创建一个包含项目元信息的egg-info目录。 3. egg-info 目录中包含了项目的名称、版本、作者、依赖关系等元信息,这些信息可以帮助正确地安装和使用项目。 4. Egg文件还可以包含项目的源代码、资源文件和其他必要的文件,以便于分发和安装。 5. 构建完成后,可以使用egg文件将项目部署到其他机器上,只需简单地将egg文件复制到目标机器,然后使用pip等工具进行安装即可。 总结来说,"python setup.py egg_i" 是一个用于创建和构建Python项目的egg文件的命令,通过将项目的源代码和必要文件打包成egg文件,方便项目的分享和安装。 ### 回答3: command "python setup.py egg_info" 是一个用于 Python命令行指令。这个命令是 setuptools 包的一部分,通常在安装第三方 Python 包时使用。 "egg_info" 是一个 setuptools 的功能,用于创建一个包含项目元数据的 ".egg-info" 目录。在这个目录下,包括了一些关于包名、作者、版本、依赖等信息的文件。这些元数据文件可以用来描述和管理项目的元信息。 通过在命令行中运行 "python setup.py egg_info",可以生成这个 ".egg-info" 目录。一些常见的用法是在安装第三方包之前先运行这个命令,这样可以确保项目的元数据被正确创建和保存。同时,这个命令也常用于开发环境中,当需要更新或修改项目的元数据时。 总结而言,command "python setup.py egg_info" 是用于在 Python 项目中创建 ".egg-info" 目录并管理项目的元数据的命令。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值