0

将python与windows一起使用我试图让我的程序查看是否Dropbox.exe存在,如果它不存在,则不会发生任何事情,然后程序将运行。我使用 print appdata 作为调试功能,这就是它打印的内容: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()加入两个部分:

>>> 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

您似乎没有在 open 中使用 appdata 变量:

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