【问题标题】:How to create our own linux command for python code file如何为python代码文件创建我们自己的linux命令
【发布时间】:2017-09-06 16:17:06
【问题描述】:

我是 python 新手。作为我项目的一部分,我正在尝试为我已经拥有的 python 文件创建一个 linux 命令。比如我有一个python文件example.py,

with open('file.txt','r') as f:
    for i in f:
        print i
with open('file.txt','r') as f:     #for different reasons I am opening file again
    for i in f:
        print i

在这里,我正在尝试编写类似 $example --print file.txt 的命令。 这意味着我从命令本身提供输入文件。然后它必须打印输入文件的内容。 请帮助我如何实现这一目标。 提前致谢。

【问题讨论】:

标签: python linux python-2.7 python-3.x


【解决方案1】:

您需要以下内容:

  1. 脚本的开头应该有#!/usr/bin/env python
  2. sys.argv 是一个包含命令行参数的列表

【讨论】:

    【解决方案2】:

    您需要将解释器添加到脚本的头部,并使用sys.env 访问输入参数:

    #!/usr/bin/python
    
    import sys, os;
    
    # check so we have enough arguments
    if len(sys.argv) < 2:
      printf "You need to supply at least two arguments."
      exit(-1)
    
    # check so the file exists
    if os.path.exists(sys.argv[1]):
      # try to open the filename supplied in the second argument
      # the sys.argv[0] always points to the name of the script
      with open(sys.argv[1], 'r') as f:
        for i in f:
          print i
    else:
      print 'The file %s does not exists' %(sys.argv[1])
    

    请注意,您可能需要将/usr/bin/python 更改为安装python 二进制文件的路径。您可以通过发出以下命令找出它的位置:

    whereis python
    

    现在你应该可以像这样运行你的命令了:

    ./command file.txt
    

    请注意,这里我假设您与 python 脚本位于同一个文件夹中。您还可以将脚本移动到位于 $PATH 环境变量中的文件夹中,以便您可以从任何地方访问它。例如,您可以将其移至/usr/local/bin:

    mv command /usr/local/bin/.
    

    然后您应该可以使用以下命令从任何文件夹运行它:

    command file.txt
    

    您需要做的最后一件事是确保脚本是可执行的:

    chmod +x command
    

    【讨论】:

    • 别忘了使脚本可执行:chmod +x command.
    • @SvenFestersen - 我打算从一开始就包含一个 chmod 命令,但我忘记了 =)
    • 感谢@Cyclonecode 的回答。你能告诉我如何在命令中输入多个文件吗?
    • @sowji - 不胜感激 =) 您只需要检查sys.argv[] 列表中的另一个索引,即./command fileA.txt fileB.txt,然后在您的脚本if os.path.exists(sys.env[1]): 中检查第二个文件@987654335 @
    猜你喜欢
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 2012-03-11
    相关资源
    最近更新 更多