使用dafault应用程序使用子过程模块python(Confusion)打开文件

问题描述 投票:0回答:1
import subprocess

subprocess.Popen(["start", r"C:\Users\John\Desktop\Goals.txt"], shell=True)

我希望Windows(我的操作系统)会启动,Notepad.exe会处理Goals.txt文件。

相反,它返回了这个:

enter image description here

什么是venv,为什么会有venv?我怎样才能解决这个问题?我也尝试使用其他文件,例如"C:\Windows\Media\Alarm01.wav",此方法有效。是因为文件存储在哪里?谢谢

python
1个回答
0
投票

venv

venv表示当前外壳正在使用“虚拟环境”。激活这样的环境时,最重要的区别是PATH值已更改。 PATH环境变量用于在不同目录中搜索键入的可执行文件。例如,如果您在终端中键入python,它将执行从环境变量python中提到的目录列表中找到的第一个PATH可执行文件。

这完全是正常和好的做法

[当您在不同的项目上工作时,有时需要混合并匹配不同的Python版本和软件包版本。因此,强烈建议始终为每个新项目简单创建一个新的venv。这样,您可以最大程度地减少回归问题。您不会因为以前的项目需要升级版本(Python /程序包/两者)而破坏了先前项目中的某些内容。

这些venv可以用python -m venv手动管理。或者,也可以通过您的IDE。创建新的venv时,它将同时包含单独的Python和已安装的软件包。当您激活venv(通过执行bin / activate)时,它还会向外壳添加一个指示器-您在终端中看到的(venv)

Popen

我无法从docs链接到一个有帮助的确切段落

If shell is True, the specified command will be executed through the shell.
...
...
On Windows with shell=True, the COMSPEC environment variable specifies the default shell. 
The only time you need to specify shell=True on Windows is when the command you wish to 
execute is built into the shell (e.g. dir or copy). You do not need shell=True to run a 
batch file or console-based executable.

似乎shell=True一样是问题。

© www.soinside.com 2019 - 2024. All rights reserved.