这些是我正在处理的3个脚本,将用于其他各种脚本,第4个脚本是一个示例:
import os
data_dir = os.path.expandvars (r"C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\system32.lnk")
os.system(r"start data_dir")
import shutil
import os
data_dir = os.path.expandvars (r"C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Data")
shutil.rmtree(r"data_dir")
import os
data_dir = os.path.expandvars (r"C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Data\startme.exe")
os.system(r"terminate data_dir")
import os
data_dir = os.path.expandvars (r'C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\system32.lnk')
os.remove(data_dir)
我遇到的问题是脚本1和2是说Windows无法找到指定的文件,但在脚本#4中,我使用完全相同的方法来识别项目/文件在该代码中的位置它似乎毫无障碍地工作。
我一直试图在整个早上弄清楚这一点,是的,我已经在这个过程中学到了很多东西,但我感到有点难过为什么我不能让脚本#1和#2工作。
PS。我也有一个不太重要的小问题,在我发布的第3个脚本中说“'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])
答案 0 :(得分:1)
您的所有示例中的问题都是您将变量名称data_dir
放在带引号的字符串中。 Python没有填写字符串中变量的内容,你似乎期待它,它放置文字文本"data_dir"
。由于您没有名为"data_dir"
的文件,因此会出现各种例外情况。
案例#2的解决方案非常简单,只需删除引号:
check = shutil.rmtree(data_dir)
对于#1和#3,它有点复杂,因为您需要将目录名称传递给另一个进程。一种选择是使用字符串格式:
os.system("start {}".format(data_dir))
如果data_dir
字符串中有空格或其他意外字符,那可能无法正常工作。更安全的方法可能是在字符串中添加引号:
os.system('start "{}"'.format(data_dir))
或者,您可以使用更好的系统来调用外部命令,例如subprocess
:
import subprocess
subprocess.call(["start", data_dir])
#3表示terminate
不是命令的问题与Python无关。我的Windows版本的默认路径中没有terminate
命令,并且我不知道该名称的任何命令存在于某个地方。如果您希望系统上有该命令的命令,则可能需要编辑系统路径,或传递完整路径,而不仅仅是程序名称。