0

WindowsでPythonを使用して、プログラムに存在するかどうかを確認させようとしてDropbox.exeいます。存在しない場合は何も起こらず、プログラムが実行されます。私は印刷アプリデータをデバッグ機能として使用しました。これが印刷されるものです。問題は、印刷する必要があるため、最後の部分を次のように追加できることC:\Users\Me\AppData\Roaming だと思いますC:\\Users\\me\\AppData\\Roaming\\\\Dropbox\\bin\\Dropbox.exe

import winpaths
appdata = winpaths.get_appdata()
print appdata


try:
   with open('appdata\Dropbox\bin\Dropbox.exe') as f: pass
except IOError as e:
   print 'dropbox cant be found'
4

3 に答える 3

3

バックスラッシュは特殊文字をエスケープするために使用されるため、最初に、パスにはスラッシュを使用する必要があります。スラッシュは Windows でも正常に機能します。または、生の文字列 ( r"C:\some\path") を使用します。これを行う必要がある理由の例:

>>> print("\path\to\random")
andom   o
>>> print("/path/to/random")
/path/to/random
>>> print(r"\path\to\random")
\path\to\random

必要なことを行うには、os.path.join()を見て、2 つの部分を結合します。

>>> import os
>>> os.path.join("/path/to", "some/file")
'/path/to/some/file'

私は Linux を使用しているため、これにより Linux スタイルのパスが生成されることに注意してください。ただし、Windows ではそれに応じて調整されます。

だからあなたの場合:

with open(os.path.join(appdata, 'Dropbox/bin/Dropbox.exe')) as f:
    ...
于 2012-07-12T17:43:40.487 に答える
1

文字列内の文字をエスケープするバックスラッシュが原因で、バグが発生する可能性があります。これを防ぐには、生の文字列を使用します。

with open(r'appdata\Dropbox\bin\Dropbox.exe') as f:

また、パス名に余分なビットを追加するには、os.pathモジュール、特にos.path.join.

于 2012-07-12T17:44:29.393 に答える
0

オープンで appdata 変数を使用していないようです:

with open(appdata + r'\Dropbox\bin\Dropbox.exe') as f: pa
于 2012-07-12T17:46:49.320 に答える