2017-12-06 7 views
1

私はExcelをオープンしようとしているので、目に見えるように表示されます。open excelファイルpythonので表示されます

私が使用しています:これは明白ですが、私は、このエラーメッセージが出続ける場合

import subprocess 
subprocess.check_call(['open', '-a', 'C:\\1\\2\\22.xlsx']) 

https://ibb.co/eOhY4b

申し訳ありません。限り、私はそこにファイルがあることを伝えることができます。

FileNotFoundError: [WinError 2] The system cannot find the file specified 
+0

'輸入os'を試してみて、' os.path.join( 'C:' を使用し、 '1'、 '2'、'22。 xlsx ') 'を手動でフォーマットするのではなく、パス引数として指定します。 – jo9k

+0

@ jo9k奇妙な、私は窓10にあり、これは私のために何もしません。私は周りの仕事を見つけた。 –

答えて

3

に動作します。 subprocessエラーメッセージ:実行ファイルが見つかりませんでした。

FileNotFoundError: [WinError 2] The system cannot find the file specified 

は意味を持ちます。パラメータが有効なファイルパスであるかどうかを確認する(そしてできない)ので、その方向を見ないでください(そして、メッセージが一般的であり、

import subprocess 
os.startfile(r'C:\1\2\22.xlsx') 

os.startfileは、Windowsエクスプローラでファイルをクリックしているときと同じことを実行しようとします:仕事であろうと)Windowsの既知の問題であること

、発見しました。

この解決方法は、win32comに依存しないという利点があります。

コメントの脇にある/議論:ドライブコロンの後にバックスラッシュが追加されないため(そして、「良い」理由(窓の理由もあります):Python os.path.join on Windows)、os.path.join('C:', '1', '2', '22.xlsx')は機能しません。

>>> os.path.join('C:', '1', '2', '22.xlsx') 
'C:1\\2\\22.xlsx' # wrong 

それを行うにはきれいな方法:

>>> os.path.join('C:', os.sep,'1' , '2', '22.xlsx') 
'C:\\1\\2\\22.xlsx' 
+0

待ち、 'os.path.join'と' os.path.normpath(os.path.join()) 'によって生成された文字列の違いは何ですか?私はnoneを見て、両方をipythonに入れ、 '=='演算子を使ってそれらを比較すると、 'True'値が返されました。 – jo9k

+1

申し訳ありませんが、私はそれが働いたと思い、私の記憶は私に幻覚を与えました。それは動作しません。私は修正を提供した –

3

import os 
os.path.join('C:', '1', '2', '22.xlsx') 

が機能しなかった理由はわかりません。私はそれが働いたと思うが、目に見えるエクセルはなかった。

とにかく、これはopenが知られているコマンド名ではないという理由だけで、それは(これは、より多くの何もWindowsレジストリのアクションではありません)動作しませんでした

xl=win32com.client.Dispatch("Excel.Application") 
xl.Visible = True 

xl.Workbooks.Open("C:\\1\\2\\22.xlsx") 
関連する問題