1

我想要一个 python 脚本的结尾从 python 打开 windows 照片库

我尝试:

os.system("C:\\Program Files (x86)\\Windows Live\\Photo Gallery\\WLXPhotoGallery.exe");

我得到:

'C:\Program' is not recognized as an internal or external command,
operable program or batch file.

任何想法如何得到这个排序?

4

3 回答 3

5

正如 Martijn Pieters 指出的那样,你真的应该使用subprocess. 但是,如果你真的很好奇为什么你的调用不起作用,那是因为调用os.system("C:\\Program Files (x86)\\Windows Live\\Photo Gallery\\WLXPhotoGallery.exe");相当于在命令行中输入:C:\Program Files (x86)\Windows Live\Photo Gallery\WLXPhotoGallery.exe.
看到文件路径中的那些空格了吗?Windows shell 将每个空格分隔的字符串视为单独的命令/参数。因此,它会尝试C:\Program使用参数Files(x86)\WindowsLive\Photo、来执行程序Gallery\WLXPhotoGallery.exe。当然,由于您的计算机上没有程序C:\Program,所以这很糟糕。

如果出于某种原因,您真的很想使用os.system,您应该考虑如何在命令行本身上执行命令。要在命令行上执行此操作,您需要键入"C:\Program Files (x86)\Windows Live\Photo Gallery\WLXPhotoGallery.exe"(引号转义空格)。为了把它翻译成你的os.system电话,你应该这样做:

os.system('"C:\\Program Files (x86)\\Windows Live\\Photo Gallery\\WLXPhotoGallery.exe"');

真的,你应该使用subprocess

希望这可以帮助

于 2013-07-08T13:43:23.977 回答
3

不要使用os.system(). 请改用该subprocess模块

import subprocess

subprocess.call("C:\\Program Files (x86)\\Windows Live\\Photo Gallery\\WLXPhotoGallery.exe")
于 2013-07-08T13:32:13.080 回答
2

您可能需要在字符串中嵌入双引号。我不是 python 家伙,但在 C# 中你需要你的字符串是:"\"C:\\Program Files (x86)\\Windows Live\\Photo Gallery\\WLXPhotoGallery.exe\"",所以 Windows可以处理那里的空间。

于 2013-07-08T13:43:04.390 回答