0

我可能会误解xargs -I {}. fswatch这应该返回我指定目录中任何新事件的文件路径,对吗?

我下面的命令旨在观察/my/path/to/watch和触发my_script.py. 需要与新事件关联的文件路径,这是我认为我传递的./my/path/to/watchmy_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

我在这里想念什么?

4

1 回答 1

0

当您从终端执行程序时,第一个参数将始终是您的程序的名称,这意味着 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] 等等将是传递给它的实际参数。

于 2020-06-18T21:49:40.240 回答