从Python运行批处理文件

从Python运行批处理文件,python,batch-file,Python,Batch File,我试图通过python运行一个批处理文件;但是,它没有识别路径。它停止读取“练习”和“文件夹”之间的空格后的路径。我怎样才能解决这个问题?我试过使用r和前后斜杠。任何帮助都会很棒。谢谢大家! import os Practice = r"C:\Users\Username\Desktop\Practice Folder\Practice.bat" os.system(Practice) “C:\Users\Username\Desktop\Practice”未被识别为内部 或外部命令、可操作

我试图通过python运行一个批处理文件;但是,它没有识别路径。它停止读取“练习”和“文件夹”之间的空格后的路径。我怎样才能解决这个问题?我试过使用r和前后斜杠。任何帮助都会很棒。谢谢大家!

import os

Practice = r"C:\Users\Username\Desktop\Practice Folder\Practice.bat"
os.system(Practice)
“C:\Users\Username\Desktop\Practice”未被识别为内部 或外部命令、可操作程序或批处理文件


您可能需要使用两种类型的引号,例如

import os

Practice = r"'C:\Users\Username\Desktop\Practice Folder\Practice.bat'"
os.system(Practice)
实际上,字符串不包含引号-您需要在字符串中包含引号,否则Windows会认为
文件夹\Practice.bat
是命令的参数,而不是文件路径的延续

import os
Practice = os.path.abspath(r"C:\Users\Username\Desktop\Practice Folder\Practice.bat")
编辑:

像这样的事情对我很有用

os.system(r'"C:\Users\Username\Desktop\Practice Folder\Practice.bat"')

使用某些相对重定向路径时,将工作目录更改为脚本目录。Pushd将当前目录更改为任何驱动器,并可以映射网络驱动器。
&&
链接命令,并且仅在左手命令成功时才运行右手命令
%UserProfile%
是一个标准的环境变量,通常比使用固定路径
C:\Users\Username
更好

import os
Practice = r'pushd "%UserProfile%\Desktop\Practice Folder" && Practice.bat'
os.system(Practice)

尝试使用
子流程
模块中的
调用
只需将命令用双引号括起来。

from subprocess import call

call(r'"C:\Users\Username\Desktop\Practice Folder\Practice.bat"')
(请注意报价的顺序…)

如果您注意引号的顺序,这甚至可以用于
os.system()

from os import system

system(r'"C:\Users\Username\Desktop\Practice Folder\Practice.bat"')

这将有助于解决您的问题。

这会给出“文件名、目录名或卷标语法不正确”错误。如果将
“C:\Users\Username\Desktop\Practice Folder\Practice.bat”
复制/粘贴到命令行中,是否有效?如果没有,则会给出错误“'C:\Users\Username\Desktop\Practice'不能识别为内部或外部命令、可操作程序或批处理文件。是否包含引号?因为它们很重要,所以可以使用。您的代码现在也可以使用:os.system(r''C:\Users\Username\Desktop\Practice Folder\Practice.bat')但现在我必须弄清楚它为什么不执行整个批处理文件。当我双击批处理文件时,它执行所有操作,但从cmd和python执行时,它执行部分操作。给我一个错误“系统找不到指定的路径”。“从批处理文件now.Cool。如果这让你得到了你想要的,那就接受答案来结束这个问题。这正是我所需要的方式!非常感谢。