2 votes

L'action Automator visant à exécuter un script Python sur une série de fichiers échoue dans Catalina.

Modification majeure

Je viens de découvrir que le flux de travail Automator qui me pose problème fonctionne parfaitement si je l'exécute en appuyant sur "play" dans la fenêtre Automator, et que il semble que cela n'échoue que lorsque je l'enregistre en tant qu'action rapide et que j'essaie de l'exécuter en cliquant sur le bouton dans le volet d'aperçu. .

Poste original

J'ai une action Automator qui itère à travers une liste de fichiers sélectionnés dans le Finder, en exécutant un script Python sur chacun d'eux à tour de rôle. Le flux de travail reçoit une liste de fichiers ou de dossiers dans le Finder, puis consiste en un seul bloc 'Exécuter le script de Shell' avec 'Pass input : as arguments'.

for f in "$@"
do
    /path/to/python_distro /path/to/script.py "$f"
done

Dans Catalina, cela échoue avec une erreur : The action “Run Shell Script” encountered an error: “path/to/python_distro: can't open file '/path/to/script.py': [Errno 1] Operation not permitted

Comment puis-je faire en sorte que Catalina l'autorise ? J'ai déjà essayé d'ajouter Automator à la liste des applications autorisées à accéder à l'intégralité du disque, et j'ai redémarré Automator et Catalina. killall Finder mais cela n'a pas résolu mon problème.

2voto

benwiggy Points 21125

L'exécution de Python scripts dans le shell scripts semble fonctionner pour moi. Est-ce que le scripts a des drapeaux exécutables définis ?

De plus, y a-t-il une raison pour laquelle vous utilisez un shell script pour passer les arguments au script Python, et non pas simplement intégrer le script Python dans l'action ?

Vous pouvez définir la valeur de la liste déroulante "Shell" comme suit /usr/bin/python pour utiliser le système Python intégré ; ou vous pouvez simplement utiliser #!/usr/bin/env python au début de votre script.

Automator vous aidera même en vous proposant :

import sys

for f in sys.argv[1:]:
    print f

pour introduire vos arguments dans votre script.

1voto

Tim Autin Points 146

Dans mon cas, ajouter le Finder aux applications ayant un accès complet au disque dans les préférences système > sécurité et confidentialité > onglet confidentialité m'a permis d'exécuter un script Python (sans cela, j'obtenais également une erreur "Operation not permitted").

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X