我可能误解了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 varsys.args将如下所示:
| 0 | 1 | 2 |
| my_script.py | foo | var |基本上,sys.args是脚本的名称,sys.argv1是传递给它的实际参数,依此类推。
https://stackoverflow.com/questions/62459359
复制相似问题