精华内容
下载资源
问答
  • 也就是我们咋情况下要用命令行写程序?
  • 命令行使用TortoiseSVN

    千次阅读 2016-12-28 11:14:09
    注:以下整理文本来源于官方的帮助文档,由于个人英语水准太那个。。。。大部分借助了谷歌翻译。  转自: http://www.cnblogs.com/andrew-blog/archive/2012/08/21/SVN_DOS_Commands.html  ...

    注:以下整理文本来源于官方的帮助文档,由于个人英语水准太那个啥。。。。大部分借助了谷歌翻译。

      转自:

    http://www.cnblogs.com/andrew-blog/archive/2012/08/21/SVN_DOS_Commands.html

      TortoiseSVN因为所有的命令都是通过命令行参数控制,你可以自动批处理脚本或从其它程序(例如你喜欢的文本编辑器)启动特定的命令和对话框。

    TortoiseSVN命令

    TortoiseSVN的GUI程序被称为TortoiseProc.exe

    所有的命令都指定参数 /command:ABCD,ABCD是必须的命令名。大多数这些命令需要至少一个路径作为参数,如 /path:“一些路径”

    由于一些命令需要一个目标路径的列表(例如提交一些特定的文件)/path 参数可以接收多个路径,由一个*字符分隔

    TortoiseSVN使用临时文件在shell扩展和主程序之间传递多个参数。从TortoiseSVN 1.5.0或更高版本, / notempfile参数是过时的并且没有必要将它添加了。

    进度对话框用于提交,更新和更多的命令通常保持打开状态的命令后,直到用户按下“确定”按钮完成这是可以改变的,在设置对话框中选中相应的选项。但是,使用此设置将关闭进度对话框,不管你的批处理文件或从TortoiseSVN右键菜单中启动命令。

    要指定一个不同的位置配置文件,使用的参数 /configdir:“路径为 config 目录”这将覆盖默认的路径,包括任何注册表设置。

    要关闭进度对话框的命令结束的情况下自动设置永久性的参数,你可以传递/ closeonend 参数。

    • / closeonend:0不自动关闭对话框

    • / closeonend:1,会自动关闭,如果没有错误

    • / closeonend:2会自动关闭,如果没有发生错误和冲突

    • / closeonend:3会自动关闭,如果没有错误,冲突和合并

    • / closeonend:4会自动关闭,如果没有错误,冲突和合并

    下表列出了所有可以使用TortoiseProc.exe命令行访问的命令。如上所述,这些应中使用的形式 /command:abcd 在表中 /command 前缀被省略以节约空间。

    命令 描述
    :about 显示关于对话框。如果直在dos中输入TortoiseProc 也将直接显示关于对话框。
    :log

    打开日志对话框。 /path 指定的文件或文件夹的日志显示。附加的选项可以设置了/startrev:XXX, /endrev:XXX, /strict,启用“停止复制”复选框,/merge 启用“包括合并版本”复选框,/findstring :“过滤器字符串” ,/findtext 的强制过滤器使用文本,而不是正则表达式,或 /findregex 强制使用正则表达式过滤器,而不是简单的文本搜索。并且 /findtype:X 其中X是一个从0到511之间的数字。这些数字的总和以下选项:

    • /findtype:0 过滤所有

    • /findtype:1 过滤消息

    • /findtype:2 过滤路径

    • /findtype:4 过滤作者

    • /findtype:8 过滤修改器

    • /findtype:16 不使用

    • /findtype:32 过滤错误ID

    • /findtype:64 不使用

    • /findtype:128 过滤时间

    • /findtype:256 按日期范围过滤器

    如果 /outfile:path 为指定文件,写入到该文件的日志对话框关闭时,将选中版本的。都写在相同的格式是用来指定在合并对话框订正订正。

    :checkout 打开“检出”对话。 /path 指定目标目录,/url 指定检出的URL。如果您指定键 /blockpathadjustments,自动检测路径被阻断调整。 /revision:XXX 指定的修订检查。
    :import 打开的导入对话框。 / path 指定要导入的数据的目录。您也可以指定/logmsg的的开关,通过预定义的日志信息导入对话框。或者,如果你不想通过在命令行上的日志信息,的使用/ logmsgfile:路径,路径指向一个文件,其中包含的日志信息。
    :update

    更新工作的SVN路径如果该选项 /rev 的话,会显示一个对话框,要求用户到哪个修订版本的更新应该去。为了避免对话框中指定修订版本号 /rev:1234其他选项 /nonrecursive 

     /ignoreexternals 

    :commit 打开提交对话框。/path 指定了目标路径或需要提交的文件的列表。您也可以指定/ logmsg 的的开关,通过预定义的日志信息,在提交对话框。或者,如果你不想通过在命令行上的日志信息,的使用 /logmsgfile:路径路径 点到一个文件中包含的日志信息。要预先填入bug的ID的情况下,你已经设置了集成bug跟踪系统正确,你可以使用 /BUGID:“bug的ID在这里”做到这一点。
    :add 添加/版本控制的路径中的文件。
    :revert 还原的工作副本的本地修改。/path 告诉哪些项目恢复。
    :cleanup 清洁起来中断或中止操作,并解除工作副本的 /path
    :resolve 标记 /path 解决一个指定文件的冲突 。如果 /noquestion 是给定的,那么解决的是做了不要求用户干涉,如果它真正应该让用户来干涉该操作。
    :repocreate 创建一个版本库中 /path
    :switch 打开选项对话框。/path 指定目标目录。
    :export 的工作副本导出 到另一个目录/路径。/path 指向一个没有版本控制目录,对话框会询问出口的目录 /path 的URL 。
    :dropexport 在/ path的工作副本导出到指定的目录 /droptarget。这种出口不使用的出口对话框,而是直接执行。选项 /overwrite 指定覆盖现有文件,无需用户确认,和选项 /autorename 的规定,如果文件已经存在,导出的文件自动重命名,以避免覆盖。
    :merge 打开合并对话框。 / path指定了目标目录。
    :copy /tag 对话框。/path 是分支 /tag 从工作副本。/URL 的目标URL。您也可以指定 /logmsg 的开关,通过预定义的日志信息的分支/标签对话框。或者,如果你不想通过在命令行上的日志信息,的使用/logmsgfile:路径路径 点到一个文件中包含的日志信息。
    :settings 打开设置对话框。
    :remove 删除的文件 /path 从版本控制的路径
    :rename 重命名文件 /path。一个对话框,询问该文件的新名称。为了避免类似的文件重命名一个步骤的问题,通过 /noquestion
    :diff 开始在TortoiseSVN设置的外置的区别程序。/path 指定的第一个文件。如果的选项 /PATH2 设置的,那么diff程序开始,这两个文件。如果 /PATH2 被省略,则差异之间进行文件 /path 和它的基础。显式设置的版本号使用了 /startrev:XXX 和 /endrev:XXX。 如果/blame PATH2 没有设置,那么差异是由第一个责怪的文件的修订。
    :showcompare

    根据不同的URL和修订比较,可以显示出一个统一的diff(如果统一设置的选项),出现一个对话框的列表已更改的文件或URL指向文件开始为这两个文件的差异。

    URL1URL2, revision1的revision2的选项 必须指定的。可选的选项pegrevision, ignoreancestry指责统一

    :conflicteditor 开始的冲突工具,在TortoiseSVN的设置有冲突的文件 /path 的正确文件。
    :relocate 打开重定位对话框。/path 指定重新定位的工作副本路径。
    :help 打开帮助文档。
    :repostatus 打开检查修改对话框。/path 指定的工作副本的目录。
    :repobrowser 启动库浏览器“对话框中,指向的URL的工作副本的URL地址 /path 指向工作文件路径。另外一个选项 /REV:XXX可以用来指定修订版本库浏览器显示。如果 /REV:XXX 省略,则默认为HEAD。如果一个URL,/projectpropertiespath:路径 /WC 路径点 从哪里阅读和使用项目属性指定的路径。
    :ignore 添加到忽略列表中的所有目标 /path,即增加了使用svn:忽略 对这些文件的属性。
    :blame

    打开追溯对话框指定的文件/path

    如果选项了/startrev 及 /endrev 的设置,然后在对话框,询问追溯范围不显示,但修改这些选项的值来代替。

    如果该选项 /line:nnn,TortoiseBlame会打开,显示指定行数。

    选项 /ignoreeol, /ignorespaces 和 /ignoreallspaces,也都支持。

    :cat 保存文件的工作副本或URL路径 /path /savepath:路径中指定的位置 。修订 /revision:XXX。这可以被用来获取某个特定的版本的文件。
    :createpatch 创建一个补丁文件 /path 中指定的路径 。
    :revisiongraph 显示给定的路径 /path 中的版本变化图 。
    :lock 锁定一个文件或文件 /path 在一个指定的目录中的所有文件 。'锁定'对话框,使用户可以输入注释的锁。
    :unlock 解锁一个文件或文件 /path 在一个指定的目录中的所有文件 。
    :rebuildiconcache 重建windows的图标缓存。仅使用Windows图标被破坏的情况下。(这是无法避免的)的一个副作用的是,桌面上的图标会重新组织。为了抑制的消息框,,通过 /noquestion
    :properties 显示的属性对话框中指定的路径 /path

     示例:

    复制代码
    TortoiseProc.exe /command:commit
                     /path:"c:\svn_wc\file1.txt*c:\svn_wc\file2.txt"
                     /logmsg:"test log message" /closeonend:0
    
    TortoiseProc.exe /command:update /path:"c:\svn_wc\" /closeonend:0
    
    TortoiseProc.exe /command:log /path:"c:\svn_wc\file1.txt"
                     /startrev:50 /endrev:60 /closeonend:0
    展开全文
  • 自己维护的应用,如果想要通过命令行来传递参数,可以使用 CommandLineParser maven依赖 <dependency> <groupId>commons-cli</groupId> <artifactId>commons-cli</artifactId> &...

    自己维护的应用,如果想要通过命令行来传递参数,可以使用 CommandLineParser

    1. maven依赖
    <dependency>
        <groupId>commons-cli</groupId>
        <artifactId>commons-cli</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
    </dependency>
    
    1. 实例
    public class Test {
    
    	public static void main(String[] args) throws ParseException {
    	     CommandLineParser commandLineParser = new DefaultParser();
    	     Options options = new Options();
    	     options.addOption("start", true, "开始");
    	     options.addOption("end", true, "结束");
    	     options.addOption("flag", false, "标志");
    	     CommandLine commandLine = commandLineParser.parse(options, args);
    	     if (commandLine.hasOption("flag")) {
    	         System.out.println("0000000000");
    	     }
    	     System.out.println(commandLine.getOptionValue("start"));
    	     System.out.println(commandLine.getOptionValue("end"));
    	 }
    
    $ java Test -start 111111 -end 222222
    1111111
    222222
    
    展开全文
  • 本文将会讨论一些非常有用的命令行工具使用小技巧,希望你的命令行使用体验更加愉快。 这篇文章中的测试实例都是在 Ubuntu 14.04LTS 系统下测试通过的。我们使用命令行 Shell 版本是 bash 4.3.11 。 Linux命令行...
    本文将会讨论一些非常有用的命令行工具使用小技巧,希望你的命令行使用体验更加愉快。
    这篇文章中的测试实例都是在 Ubuntu 14.04LTS 系统下测试通过的。我们使用命令行 Shell 版本是 bash 4.3.11 。

    Linux命令行工具使用小贴士及技巧
    >>>> Linux 命令行工具使用的一些小技巧

    我们假设你已经掌握了一些 Linux 命令行的基础知识,比如什么是 root 账号及 home 目录,什么是环境变量,如何查看目录内容等等。说明这些小技巧的同时也会介绍涉及到的概念,如果有的话。
    >>>> 轻松切换目录 —— 快捷方式

    假设你正在命令行下做一些操作,并且你需要经常在两个目录间来回切换。而且这两个目录在完全不同的两个路径下,比如说,分别在 /home/ 和 /usr/ 下。你会怎么做呢?
    其中,最简单直接的方式就是输入这些目录的全路径。虽然这种方式本身没什么问题,但是却很浪费时间。另外一种方式就是打开两个终端窗口分别进行操作。但是这两种方式使用起来既不方便,也显得没啥技术含量。
    你应该感到庆幸的是,还有另外一种更为简捷的方法来解决这个问题。你需要做的就是先手动切换到这两个目录(通过 cd 命令分别加上各自的路径),之后你就可以使用 cd - 命令在两个目录之间来回快速切换了。
    例如:
    我现在在下面的目录:
    $ pwd
    /home/himanshu/Downloads
    然后,我切换到 /usr/ 路径下的其它目录:
    cd /usr/lib/
    现在,我可以很方便的使用下面的命令来向前、向后快速地切换到两个目录:
    cd -
    下面是 cd - 命令的操作截图:
    The Linux cd command
    The Linux cd command
    有一点我得跟大家强调下,如果你在操作的过程中使用 cd 加路径的方式切换到第三个目录下,那么 cd - 命令将应用于当前目录及第三个目录之间进行切换。
    >>>> 轻松切换目录 —— 相关细节

    对于那些有强烈好奇心的用户,他们想搞懂 cd - 的工作原理,解释如下:如大家所知道的那样, cd 命令需要加上一个路径作为它的参数。现在,当 - 符号作为参数传输给 cd 命令时,它将被 OLDPWD 环境变量的值所替代。
    The cd command explained
    The cd command explained
    现在应该明白了吧, OLDPWD 环境变量存储的是前一个操作目录的路径。这个解释在 cd 命令的 man 帮助文档中有说明,但是,很遗憾的是你的系统中可能没有预先安装 man 命令帮助工具(至少在 Ubuntu 系统下没有安装)。
    但是,安装这个 man 帮助工具也很简单,你只需要执行下的安装命令即可:
    sudo apt-get install manpages-posix
    然后做如下操作:
    man cd
    打开 man 帮助文档主页后,你将会看到下面很明确的解释:
    —— 当 - 符号被用作 cd 命令的参数值时,将等同于下面的操作命令:
    cd "$OLDPWD" && pwd
    毫无疑问, cd 命令设置了 OLDPWD 环境变量值。因此每一次你切换操作目录时,上一个目录的路径就会被保存到这个变量里。这还让我们看到很重要的一点就是:任何时候启动一个新的 shell 实例(包括手动执行或是使用 shell 脚本),都不存在 ‘上一个工作目录’。
    Hyphen and the cd command
    Hyphen and the cd command
    这也很符合逻辑,因为 cd 命令设置了 OLDPWD 环境变量值。因此,除非你至少执行了一次 cd 命令,否则 OLDPWD 环境变量不会包含任何值。
    继续,尽管这有些难以理解, cd - 和 cd $OLDWPD 命令的执行结果并非在所有环境下都相同。比如说,你重新打开一个新的 shell 窗口时。
    cd command example
    cd command example
    从上面的截图可以清楚的看出,当执行 cd - 命令提示未设置 OLDPWD 值时, cd $OLDPWD 命令没有报任何错;实际上,它把当前的工作目录改变到用户的 home 目录里。
    那是因为 OLDPWD 变量目前还没有被设置, $OLDPWD 仅仅是一个空字符串。因此, cd $OLDPWD 命令跟 cd 命令的执行结果是一致的,默认情况下,会把用户当前的工作目录切换到用户的 home 目录里。
    最后,我还遇到过这样的要求,需要让 cd - 命令执行的结果不显示出来。我的意思是,有这样的情况(比如说,在写 shell 脚本的时候),你想让 cd - 命令的执行结果不要把目录信息显示出来。那种情况下,你就可以使用下面的命令方式了:
    cd - &>/dev/null
    上面的命令把文件描述符 2(标准输入)和 1(标准输出)的结果重定向到 /dev/null 目录。这意味着,这个命令产生的所有的错误不会显示出来。但是,你也可以使用通用的 $? 方式来检查这个命令的执行是否异常。如果这个命令执行报错, echo $? 将会返回 1,否则返回 0。
    或者说,如果你觉得 cd - 命令出错时输出信息没有关系,你也可以使用下面的命令来代替:
    cd - > /dev/null
    这个命令仅用于将文件描述符 1 (标准输出)重定向到 /dev/null 。
    >>>>

    Linux高效的文本过滤命令

    Linux上12个高效的文本过滤命令
    1、 awk 命令
    awk 是一个卓越的模式扫描和处理语言,它可被用于在 Linux 下构造有用的过滤器。你可以通过阅读我们的 awk 系列 1 到 13 部分 来开始使用它。
    另外,也可以通过阅读 awk 的 man 手册来获取更多的信息和使用选项。
    $ man awk
    2、 sed 命令
    sed 是一款过滤和转换文本的强大的流编辑器。我们已经写了两篇关于 sed 的有用的文章,你可以通过这儿来了解:
    如何使用 GNU sed 命令在 Linux 下创建、编辑和处理文件
    日常 Linux 系统管理员任务使用的 15 个有用的 sed 命令小贴士和技巧
    sed 的 man 手册已经添加控制选项和说明:
    $ man sed
    3、 grep、 egrep、 fgrep、 rgrep 命令行
    这些过滤器输出匹配指定模式的行。它们从一个文件或者标准输入读取行,并且输出所有匹配的行,默认输出到标准输出。
    注意:主程序是 grep,这些变体与使用特定的选项的 grep 相同,如下所示(为了向后兼容性,它们依旧在使用):
    $ egrep = grep -E
    $ fgrep = grep -F
    $ rgrep = grep -r
    下面是一些基本的 grep 命令:
    tecmint@TecMint ~ $ grep "aaronkilik" /etc/passwd
    aaronkilik:x:1001:1001::/home/aaronkilik:
    tecmint@TecMint ~ $ cat /etc/passwd | grep "aronkilik"
    aaronkilik:x:1001:1001::/home/aaronkilik:
    在 Linux 下的 grep、 egrep 和 fgrep 的差异?中,你可以了解更多。
    4、 head 命令
    head 用于显示文件前面的部分,默认情况下它输出前 10 行。你可以使用 -n 标志来指定显示的行数:
    tecmint@TecMint ~ $ head /var/log/auth.log
    Jan 2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
    Jan 2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
    Jan 2 10:51:34 TecMint sudo: tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
    Jan 2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
    Jan 2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root
    Jan 2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session opened for user root by (uid=0)
    Jan 2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session closed for user root
    Jan 2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session opened for user root by (uid=0)
    Jan 2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session closed for user root
    Jan 2 11:09:01 TecMint CRON[4146]: pam_unix(cron:session): session opened for user root by (uid=0)
    tecmint@TecMint ~ $ head -n 5 /var/log/auth.log
    Jan 2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
    Jan 2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
    Jan 2 10:51:34 TecMint sudo: tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
    Jan 2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
    Jan 2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root
    学习如何 使用带有 tail 和 cat 命令的 head 命令,以便在 Linux 下更有效的使用。
    5、 tail 命令
    tail 输出一个文件的后面的部分(默认 10 行)。使用 -n 选项来指定显示的行数。
    下面的命令将会输出指定文件的最后 5 行:
    tecmint@TecMint ~ $ tail -n 5 /var/log/auth.log
    Jan 6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
    Jan 6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
    Jan 6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
    Jan 6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
    Jan 6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
    另外,tail 有一个特殊的选项 -f ,可以 实时查看一个文件的变化 (尤其是日志文件)。
    下面的命令将会使你能够监控指定文件的变化:
    tecmint@TecMint ~ $ tail -f /var/log/auth.log
    Jan 6 12:58:01 TecMint sshd[1269]: Server listening on :: port 22.
    Jan 6 12:58:11 TecMint sshd[1269]: Received SIGHUP; restarting.
    Jan 6 12:58:12 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
    Jan 6 12:58:12 TecMint sshd[1269]: Server listening on :: port 22.
    Jan 6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
    Jan 6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
    Jan 6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
    Jan 6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
    Jan 6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
    Jan 6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
    阅读 tail 的 man 手册,获取使用选项和说明的完整内容:
    $ man tail


    银盾云正在进一步加大产品迭代和技术服务的力度,由专业工程师团队为全球用户提供云计算、云存储基础设施规模及框架咨询,并探讨关键场景的部署方式。银盾云以为政企客户和互联网企业提升IT核心能力为使命,以卓越的解决方案、对客户业务的深刻理解以及分布全国技术支持中心的高效密集的服务,为客户提供贯穿其IT建设全生命周期的“一站式”服务。同时,秉持“稳定提升价值”的理念,银盾云在物理机房、自动化运维、安全防护、网络连接、客服响应等多层面,持续为政企客户和互联网企业提供稳定、优质的用户体验,帮助用连接云计算未来。
    展开全文
  • 命令行解析

    2019-11-27 20:24:08
    命令行解析的方法4种(我遇到的) sys.argv tensorflow.app optparse argparse 1 sys.argv 参考 : https://www.cnblogs.com/liangmingshen/p/8906148.html sys.argv[]说白了就是一个从程序...

    命令行解析的方法有4种(我遇到的)

    • sys.argv

    • tensorflow.app

    • optparse

    • argparse

    1 sys.argv

    参考 : https://www.cnblogs.com/liangmingshen/p/8906148.html

    sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个“外部”很关键,所以那些试图从代码来说明它作用的解释一直没看明白。因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可以看作是一个列表,所以才能用[]提取其中的元素。其第一个元素是程序本身,随后才依次是外部给予的参数。

    下面我们通过一个极简单的test.py程序的运行结果来说明它的用法。

    1 #test.py
    2 
    3 import sys
    4 a=sys.argv[0]
    5 print(a)

     将test.py保存在c盘的根目录下。

     在程序中找到 ‘运行’->点击->输入"cmd"->回车键   进入控制台命令窗口(如下图),先输入cd c:\   (作用是将命令路径改到c盘根目录),然后输入test.py运行我们刚刚写的程序:

      得到的结果是C:\test.py,这就是0指代码(即此.py程序)本身的意思。

      然后我们将代码中0改为1 :

      a=sys.argv[1]https://www.cnblogs.com/liangmingshen/p/8906148.html

      保存后,再从控制台窗口运行,这次我们加上一个参数,输入:test.py what

     得到的结果就是我们输入的参数what,看到这里你是不是开始明白了呢。

     那我们再把代码修改一下:

     a=sys.argv[2:]

     保存后,再从控制台窗台运行程序,这次多加几个参数,以空格隔开:

     test.py a b c d e f

     得到的结果为[‘b’, ’c’, ’d’, ’e’, ’f’]

     

       应该大彻大悟了吧。Sys.argv[ ]其实就是一个列表,里边的项为用户输入的参数,关键就是要明白这参数是从程序外部输入的,而非代码本身的什么地方,要想看到它的效果就应该 将程序保存了,从外部来运行程序并给出参数。

    2 tensorflow.app

    参考 : https://blog.csdn.net/leiting_imecas/article/details/72367937

    tf定义了tf.app.flags,用于支持接受命令行传递参数,相当于接受argv。

    import tensorflow as tf
    
    #第一个是参数名称,第二个参数是默认值,第三个是参数描述
    tf.app.flags.DEFINE_string('str_name', 'def_v_1',"descrip1")
    tf.app.flags.DEFINE_integer('int_name', 10,"descript2")
    tf.app.flags.DEFINE_boolean('bool_name', False, "descript3")
    
    FLAGS = tf.app.flags.FLAGS
    
    #必须带参数,否则:'TypeError: main() takes no arguments (1 given)';   main的参数名随意定义,无要求
    def main(_):  
        print(FLAGS.str_name)
        print(FLAGS.int_name)
        print(FLAGS.bool_name)
    
    if __name__ == '__main__':
        tf.app.run()  #执行main函数
        if.app.run(main=main)# 也可这么写
    
       

    执行:

    [root@AliHPC-G41-211 test]# python tt.py
    def_v_1
    10
    False
    [root@AliHPC-G41-211 test]# python tt.py --str_name test_str --int_name 99 --bool_name True
    test_str
    99
    True

    3 optparse

    参考 :  https://www.cnblogs.com/paulwhw/p/9065074.html

     一、关于解析命令行参数的方法

      关于“解析命令行参数”的方法我们一般都会用到sys.argv跟optparse模块。关于sys.argv,网上有一篇非常优秀的博客已经介绍的很详细了,大家可以去这里参考:https://www.cnblogs.com/aland-1415/p/6613449.html 

      这里为大家介绍一个比sys.argv更强大的optparse模块。

      这里说一句题外话,点开optparse的源码,第一行注释是这样的:A powerful, extensible, and easy-to-use option parser。是否感受到了作者强有力的......

      说回正题。当我们要利用server与client进行FTP文件传输的时候,在client端往往需要输入诸如 -s 10.10.10.1 -p 9001 这样的信息,当然我们不能控制用户的输入,如果用户随意的输入错误的命令,比如不写IP地址,只是写-s -p 9001,或者只写 -s -p。我们如果还用sys.argv获取参数的话需要做很多麻烦的逻辑判断,这给我们开发程序带来了很大的不便。

      但是如果我们利用optparse会十分便捷的解决这样的问题。

      二、optparse介绍

      2.1 optparse的用法如下:

    import optparse
    parser = optparse.OptionParser()
    parser.add_option("-s", "--server", dest="server", help="ftp server ip_address")
    parser.add_option("-P", "--port", type="int", dest="port", help="ftp server port")
    parser.add_option("-u", "--username", dest="username", help="username info")
    parser.add_option("-p", "--password", dest="password", help="password info")  

      首先import optparse类,然后创建optparse对象parser,再使用add_option()来定义命令行参数,最后使用parse_args()来解析命令行。

      2.2 举例说明:

      我们先新建一个test.py文件,代码如下

    import optparse
    
    class Wang_opt:
    
        def __init__(self):
            #初始化
            parser = optparse.OptionParser()
            parser.add_option("-s", "--server", dest="server", help="ftp server ip_address")
            parser.add_option("-P", "--port", type="int", dest="port", help="ftp server port")
            parser.add_option("-u", "--username", dest="username", help="username info")
            parser.add_option("-p", "--password", dest="password", help="password info")
            #解析参数
            self.options, self.args = parser.parse_args()
            print(self.options,self.args)
    
    
    if __name__ == '__main__':
        whw_opt = Wang_opt()

       然后在test.py文件的目录下运行python test.py,后面不跟任何参数,看看效果:

      运行的结果一个是”字典”,里面存放的是我们需要的信息,后面有一个“空列表”,我们再试试加上符合条件的参数以及不符合条件的参数:

     

      这就说明,”字典”中存放的是我们需要的信息,如果用户没有输入默认设置为None;而“列表”’中存放的是“错误”信息。再返回头看看源代码,其实这个”字典”就是上面的self.options变量,“列表”就是self.args。optparse模块解析的结果就是“我们想得到的信息”以及“用户误操作的输入信息”——的确很强大!

      当然,如果用户不知道他需要输入什么命令,我们可以在后面输入 -h,寻求帮助:

      其实大家可以对照着源代码,这些信息的关键字都是我们在add_option()方法中设置的——嗯,确实~A powerful, extensible, and easy-to-use option parser

      三、重点说明

      3.1 关于得到的“字典”与“列表”的说明:

      其实我们解析得到的参数self.options与 self.args并不是真正意义上的字典与列表,只是“字典与列表的形象”而已!实际上,这两个参数是“对象”,我们可以进行如下验证:在程序最后打印:

    print(whw_opt.options.server)

      我们可以看到:用操作符‘.’可以取得server的值 0.0.0.0。

      但是,我们如果利用字典的key-value的取值方式会报错:

      3.2 一个小优化:

      当然,再厉害的工具也必然会有缺点。如果要求用户必须有输入的话,我们可以这样来优化一下程序:

    import optparse
    
    class Wang_opt:
    
        def __init__(self):
            #初始化
            parser = optparse.OptionParser()
            parser.add_option("-s", "--server", dest="server", help="ftp server ip_address")
            parser.add_option("-P", "--port", type="int", dest="port", help="ftp server port")
            parser.add_option("-u", "--username", dest="username", help="username info")
            parser.add_option("-p", "--password", dest="password", help="password info")
            #解析参数
            self.options, self.args = parser.parse_args()
            print(self.options,self.args)
    
        def veargparserification(self):
            if not self.options.server or not self.options.port:
                exit('ERROR!must support server and port parameters!')
    
    
    if __name__ == '__main__':
        whw_opt = Wang_opt()
        whw_opt.verification()

      效果如下:

    4 argparse

     参考 : https://blog.csdn.net/yy_diego/article/details/82851661

    argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数。他的用法和tf.app有点像。
    1.基本框架

    下面是采用argparse从命令行获取用户名,该python的文件名为:fun_test.py

    import argparse
    
    def main():
        parser = argparse.ArgumentParser(description="Demo of argparse")
        parser.add_argument('-n','--name', default=' Li ')
        parser.add_argument('-y','--year', default='20')
        args = parser.parse_args()
        print(args)
        name = args.name
        year = args.year
        print('Hello {}  {}'.format(name,year))
    
    if __name__ == '__main__':
        main()

    执行命令python fun_test.py结果如下:
    在这里插入图片描述
         在上面的代码中,我们先导入了argparse这个包,然后包中的ArgumentParser类生成一个parser对象(好多博客中把这个叫做参数解析器),其中的description描述这个参数解析器是干什么的,当我们在命令行显示帮助信息的时候会看到description描述的信息。
         接着我们通过对象的add_argument函数来增加参数。这里我们增加了两个参数name和year,其中'-n','--name'表示同一个参数,default参数表示我们在运行命令时若没有提供参数,程序会将此值当做参数值。执行结果如上图所示。
         最后采用对象的parse_args获取解析的参数,由上图可以看到,Namespace中有两个属性(也叫成员)这里要注意个问题,当'-'和'--'同时出现的时候,系统默认后者为参数名,前者不是,但是在命令行输入的时候没有这个区分接下来就是打印参数信息了。
    当执行命令python fun_test.py -n Wang --year '26'结果如下:
    在这里插入图片描述
    当执行命令python fun_test.py -h可以查看帮助信息
    在这里插入图片描述

    更多参数介绍可以参看这个链接
     

    展开全文
  • 日常在命令行终端下工作,我们都常常和许多命令打交道。掌握许多不错的命令行工具,能极大的提升我们的日常工作和开发效率。此篇介绍Tim哥在开发中常用的一些命令行工具,希望对你也有所帮助。 常用命令行工具...
  • 本文将会讨论一些非常有用的命令行工具使用小技巧,希望你的命令行使用体验更加愉快。 这篇文章中的测试实例都是在 Ubuntu 14.04LTS 系统下测试通过的。我们使用命令行 Shell 版本是 bash 4.3.11 。 ...
  • 命令行参数

    2015-03-18 11:03:14
    命令行参数程序的实例代码如下: #include int main(int argc,char *argv[]) { int i; for(i=0;i;i++) { printf("%s\n",argv[i]); } return 0; } 编译之后形成test.exe可执行文件,将可执行文件拷贝到C...
  • unreal 命令行

    2021-01-31 17:03:01
    Stat统计调试相关 stat unit // 显示cpu gpu ms stat fps // 显示fps t.MaxFPS 600 // 解除最大帧率 stat...freezerendering // 冻结渲染 用于测试没有被遮挡的 stat initviews // 统计遮挡信息
  • Perl 命令行

    万次阅读 2011-10-23 15:45:45
    Perl很多命令行参数,通过它可以让你的程序更简练,并且可以写出很多只有一行命令的perl。在这篇文章里我们来了解一些常用的命令行参数。 ----------- 命令行调用 perl [ -sTtuUWX ] [ -hv ] [ -V[:...
  • Kettle的命令行参数使用

    千次阅读 2016-09-19 10:25:59
    Kettle每日定时运行,个参数是定时取出,若需要做数据回溯,则需要手动修改参数值,不太方便,便着手从JOB运行时赋值命令行参数来做,以达到定时运行不需要输入参数,需要数据回溯时输入相应参数即可,如下。...
  • Kettle命令行使用说明

    2019-12-09 14:27:25
    1. KETTLE简介 ...呵呵,外国人都很联想力。 看了提供的文档,然后对发布程序的简单试用后,可以很清楚得看到Kettle的四大块: 1) Chef——工作(job)设计工具(GUI方式) 2) Kitchen——工作(job)执...
  • libreoffice安装以及命令行使用

    万次阅读 2019-03-02 22:21:30
    由于工作需要,笔者正在开发文档解析相关的功能,但是目前的python3只有python-docx、pfdminer3k、python-pptx...查阅了许多资料,目前转化文件来说,openoffice与libreoffice能够支持命令行操作,在转换小文件时...
  • 命令行参数的使用(讲解main函数的参数)

    万次阅读 多人点赞 2018-01-02 18:01:29
    什么是命令行参数? linux下经常会使用命令行参数 例如: ls -l gcc test.c -E test.i 这些在后面加入的-l 、-E、test.c之类的的东西我们统称为命令行参数 那他们是如何实现的?
  • windows命令行

    2018-10-31 12:19:44
    文章目录命令的组合批处理命令CallChoiceEchoFor 命令的组合 命令1 &amp; 命令2 表示先执行命令1,再执命令2 ...我们还可以使用()对命令集进行组合 (命令1 &amp; 命令2) &amp;&amp; 命令...
  • linux 常用命令行

    2019-04-25 00:00:55
    最近在学这个 Linux命令行 就写了这个整理了一下自己知识(当然也没有分类的 大家将就看看算了) 其实主要写给自己的 大神可以溜走了 只针对零基础小白 写的有点挫 也不太详细 也没有分类 可能小白也不怎么看...
  • hbase shell在create table的时候, 我们看到VERSIONS和MIN_VERSIONS 为没有MAX_VERSIONS呢? 这是因为: hbase.column.max.version 是在hbase-site.xml中设置的。
  • 命令行语法错误

    2021-04-16 16:38:08
    这个问题是我在配置Tomcat时遇到的,jdk,jre,环境配置的检查过多次都没问题,但是命令行总是输出命令语法不正确,经过排查,确定问题出在命令行的注册表配置 该问题困扰了我整整4天时间,那段时间真的煎熬,...
  • 命令行重启oracle

    2020-06-18 10:16:28
    是时候进入装逼模式了,用命令行来重启吧,不要动不动就重启机器这么low。 C:\Users\Administrator>sqlplus sys/mypwd@orcl12c as sysdba; --重启oracle SQL>shutdown immediate; SQL>startup; 就这么...
  • Git命令行整理

    2019-07-02 15:32:04
    mac电脑上sourceTree起来十分顺手,换windows之后,我发现sourceTree还没有命令行好用。所以果断抛弃sourceTree命令行搞起来。自己也是一个命令行新手,所以,也是在各位友友的博客搜罗整理的一些常用的命令行,我...
  • 最近再学习C语言,在学习到命令行参数的问题的时候搞清楚了命令行参数的用法以及怎么实现的,但是目前无法理解命令行参数到底在实际编程当中的作用是是什么? 希望得到好心人的帮助,谢谢。
  • 背景:使用命令行来修改windows 命令行窗口了的大小和屏幕缓冲区的大小(宽度和高度)方法:方法是改注册表。先来看下你可以在命令行下直接指定命令行窗口的大小了,进到命令行执行 mode,可以看到关于控制台的信息...
  • curl命令行工具

    2019-08-14 12:35:56
    curl是一个命令行工具,通过指定的URL来上传或下载数据,并将...在curl中可以使用短形式的命令行选项,比如通知curl打开verbose模式,可以使用-v选项: $ curl -v www.baidu.com 这里,-v就是短形式的选项,我们...
  • 学会使用交互式命令行

    千次阅读 2018-06-11 20:33:00
    我学习python迈出的第一步就是学习交互式命令行使用。在这里,你可以通过一些简单的代码来测试你对python语法的认知是否正确,甚至可以通过你已的编程知识大胆地写出一些你所猜测的python语句,看看它是否能成功...
  • WireShark命令行工具

    2020-06-30 21:02:03
    tshark tshark -D 查看系统那些网卡 -i指定网卡 tshark -f “tcp dst port 80” ...已经了wireshark,为还要有命令行工具呢 因为命令行工具可以和其他工具进行结合 等等优点 ////////////////////// 除
  • kettle使用命令行来运行ktr和kjb
  • linux\mac 日常入门命令行使用对于没有接触过命令行的人,对于命令行还是非常恐惧的。我能够理解,但是我个人认为,大可不必。如果不是要深入研究 shell ,否则,日常使用其实一点都不困难。 本文主要是讲 linux ...
  • 命令行打开图片

    2019-11-03 16:24:43
    kaggle比赛中的时候图片几十万张。 这个时候如果去图片所在目录下的话,文件管理器就会缓冲不开。 那也就无从进行双击图片然后打开看效果的操作了: 这时可以采用命令行的方式: kolourpaint dog.549.jpg ...
  • 但是没想到,近期处于不知道原因,不能了。破解人家的接口难免会这样的情况发生,也不能怪人家百度对吧。 加上最近工作比较忙,所以也没有去再研究,今天正好有点时间,我就打算重新写一个命令行的翻译工具。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,504
精华内容 20,201
关键字:

命令行有啥用