我可能误解了fswatch
的xargs -I {}
解析参数。这应该返回我指定的目录中任何新事件的文件路径,对吗?
下面的命令用于监视/my/path/to/watch
,并在/my/path/to/watch
中发生新事件时触发my_script.py
。my_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
中的新事件相关的文件路径。
这里我漏掉了什么?
发布于 2020-06-19 05:49:40
当您从终端执行程序时,第一个参数将始终是程序的名称,这意味着sys.argv将是脚本的名称。您可能希望使用sys.argv1,因为sys.argv之后的所有内容都是传递给脚本的实际参数。
你可以这样看它:
$ python my_script.py foo var
sys.args将如下所示:
| 0 | 1 | 2 |
| my_script.py | foo | var |
基本上,sys.args是脚本的名称,sys.argv1是传递给它的实际参数,依此类推。
https://stackoverflow.com/questions/62459359
复制相似问题