Python 简单但重复的格式化/FileLocationErrors问题

Python 简单但重复的格式化/FileLocationErrors问题,python,formatting,shutil,os.system,Python,Formatting,Shutil,Os.system,以下是我正在编写的3个脚本,它们将用于其他各种脚本,第4个脚本是一个示例: 1. 2. 3. 4. 我在脚本1和脚本2中遇到的问题是,windows无法找到指定的文件,但在脚本4中,我使用了完全相同的方法来确定项目/文件在代码中的位置,并且它似乎可以顺利工作 我整个上午都在试图弄明白这一点,是的,我在这个过程中学到了很多东西,但我感到有点困惑,为什么我不能让脚本1和脚本2正常工作 另外,我还有一个不太重要的小问题,在第三个脚本中,我发布了这样一句话:“terminate”不被认为是内部或外部命令

以下是我正在编写的3个脚本,它们将用于其他各种脚本,第4个脚本是一个示例:

1. 2. 3. 4. 我在脚本1和脚本2中遇到的问题是,windows无法找到指定的文件,但在脚本4中,我使用了完全相同的方法来确定项目/文件在代码中的位置,并且它似乎可以顺利工作

我整个上午都在试图弄明白这一点,是的,我在这个过程中学到了很多东西,但我感到有点困惑,为什么我不能让脚本1和脚本2正常工作

另外,我还有一个不太重要的小问题,在第三个脚本中,我发布了这样一句话:“terminate”不被认为是内部或外部命令、可操作程序或批处理文件。”

任何帮助都将不胜感激, 谢谢

编辑

import subprocess
import os

data_dir = os.path.expandvars ("C:\\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Data\\startme.exe")

subprocess.call(["start", data_dir])

所有示例中的问题都是将变量名
data\u dir
放在带引号的字符串中。Python没有在字符串中填充变量的内容(这似乎是您所期望的),而是将文本
“data\u dir”
。由于没有名为
“data\u dir”
的文件,因此会出现各种异常

案例2的解决方案非常简单,只需去掉引号:

check = shutil.rmtree(data_dir)
对于#1和#3,这有点复杂,因为需要将目录名传递给另一个进程。一个选项是使用字符串格式:

os.system("start {}".format(data_dir))
但是,如果
data\u dir
字符串中有空格或其他意外字符,则可能无法正常工作。更安全的方法可能是在字符串中添加引号:

os.system('start "{}"'.format(data_dir))
或者,您可以使用更好的系统来调用外部命令,如
子流程

import subprocess
subprocess.call(["start", data_dir])

#3说
terminate
不是命令的问题与Python无关。在我的Windows版本的默认路径中没有
terminate
命令,而且我不知道有任何以该名称命名的命令隐藏在某处。如果您希望系统中有一个同名命令,您可能需要编辑系统路径或传递完整路径,而不仅仅是程序名。

我不知道这是否是一个输入错误,但是在方法1中你有
\\system32.lnk
C:\\Users
在方法4中你有
\systeam32.lnk
C:\\Users
好,所以我用你告诉我的测试了#1,它起作用了,而#2对第一种方法不起作用(它抱怨空格)第二个方法没有错误,但很快就调出了一个cmd,然后又调出了另一个cmd,奇怪地设置为files文件夹的路径,第三个方法说它找不到该文件夹并指向WingIDE调试器中的子进程文件。另外,您将如何终止进程?也就是结束一项任务
check = shutil.rmtree(data_dir)
os.system("start {}".format(data_dir))
os.system('start "{}"'.format(data_dir))
import subprocess
subprocess.call(["start", data_dir])