🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

解決済

1回答

3571閲覧

pyautogui でchromeを起動させたい

begenner

総合スコア80

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

0クリップ

投稿2020/01/04 00:46

期待する動作

PyAutoGuiによるChromeアプリを起動もしくはアクティブ化ができるようにしたいです

エラー内容

The files /Users/xxx/Chrome.app does not exist.

と表示されChromeアプリが起動(or アクティブ化)されない

### 内容
Python初心者です。

繰り返し処理を自動化する方法を調べていると

という記事を見つけたため、手元で一連の動作を自動化できるか試しています。
その処理の中で一番最初に

  • Chromeを起動する
  • 起動していればChromeをアクティブにする

といった処理がしたいのですが、

The files /Users/xxx/Chrome.app does not exist.

と表示されChromeアプリが起動(or アクティブ化)されません。
原因としては
手順1. 変数cmd'open -a /Applications/Google\ Chrome.app
手順2. subprocess.call(cmd.strip().split(" "))コマンドで実行する

の手順1のアプリ名の半角スペースと手順2のsplit(" ")が原因だと思います(アプリ名スペースがないアプリは起動しました)。

Python初心者のためこれに対する解決法が全くわかりません(m_ m)
もしわかる方がいらっしゃればご教授いただきますようよろしくお願いいたします(m
_m)

動作環境

mac: High Sierra
python: 3.7.4
PyAutoGUI: 0.9.47
Google Chrome はインストール済み

該当しそうなコード

python

1import pyautogui; 2import re; 3import os; 4import subprocess; # 標準インストールされている 5import sys; 6import time; 7import array; 8import pyperclip; 9 10cmd='open -a /Applications/Google\ Chrome.app' 11subprocess.call(cmd.strip().split(" ")) 12 13 14

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

原因はsplit(" ")あっているかと思われます。

python

1cmd='open -a /Applications/Google\ Chrome.app' 2print(cmd.strip().split(" ")) 3# ->['open', '-a', '/Applications/Google\', 'Chrome.app'] 4# 配列の2番目が分割されちゃってます。

subprocessはcmd部を配列で受け取りたいっていうだけなので配列化の処理でバグが出るならそもそも配列で与えてやれば良いのではないでしょうか?

というわけで

python

1cmd=["open", "-a", "/Applications/Google Chrome.app"] 2subprocess.call(cmd) 3# URLを指定する場合は... 4# cmd=["open", "-a", "/Applications/Google Chrome.app", "http://localhost"]

でいけるかと思います。

投稿2020/01/06 02:59

yusuraume

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

begenner

2020/01/08 00:09

ありがとうございました!! 期待どうり動きました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問