【问题标题】:fswatch parsed argument not returning expected value?fswatch 解析的参数没有返回预期值?
【发布时间】:2020-06-18 21:02:22
【问题描述】:

我可能误解了 fswatchxargs -I {} 解析参数。这应该返回我指定目录中任何新事件的文件路径,对吗?

我下面的命令旨在观察/my/path/to/watch 并在/my/path/to/watch 中发生新事件时触发my_script.pymy_script.py 需要与新事件关联的文件路径,这就是我认为我通过 {} 传递的路径。

我的命令:

fswatch -0  /my/path/to/watch | xargs -0 -n 1 -I {} python my_script.py {} > fswatch.output &

my_script.py,我有

import sys
print sys.argv[0]

但这只是返回my_script.py,我希望它返回与/my/path/to/watch中的新事件关联的文件路径。

我在这里错过了什么?

【问题讨论】:

    标签: python-3.x fswatch


    【解决方案1】:

    当您从终端执行程序时,第一个参数将始终是您的程序的名称,这意味着 sys.argv[0] 将是您的脚本的名称。您想要使用的可能是 sys.argv[1],因为 sys.argv[0] 之后的所有内容都是传递给脚本的实际参数。

    你可以这样看:

    $ python my_script.py foo var
    

    sys.args 看起来像这样:

    |     0        |  1  |  2  | 
    | my_script.py | foo | var |
    

    基本上,sys.args[0] 将是您的脚本的名称,而 sys.argv[1] 等等将是传递给它的实际参数。

    【讨论】:

      猜你喜欢
      • 2016-05-05
      • 2018-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-30
      相关资源
      最近更新 更多