我有正在使用的Python脚本,从另一个目录中调用批处理文件时似乎无法解决此问题,这是我的脚本供参考
def makeFolder(folderName=""):
try:
os.mkdir(path + "/" + folderName)
except OSError:
print("Error creating folder.")
def p(string=""):
os.system('cls')
print(string)
path = os.getcwd().replace("/python", "")
name = input("What would you like the client to be called? ") + " 1.8.8"
mcp = "http://www.modcoderpack.com/files/mcp918.zip"
optifine = "http://download2265.mediafire.com/bdd5w08f1zcg/e878f5djmyuvnxm/Optifine.zip"
updatedDecompileFile = "https://pastebin.com/raw/Mwt03EEs"
def setup():
makeFolder(name)
p("Created folder '%s'." % name)
zipPath = name + "/src.zip"
p("Downloading MCP 1.8.8 from %s" % mcp)
urllib.request.urlretrieve(mcp, zipPath)
p("Finished Downloading MCP 1.8.8")
p("Unzipping MCP 1.8.8")
with zipfile.ZipFile(zipPath, 'r') as zip_ref:
zip_ref.extractall(path + "/" + name)
os.remove(zipPath)
p("Unzipped MCP 1.8.8")
mcpPath = path + "/" + name + "/"
for file_name in listdir(mcpPath):
if file_name.endswith(('.bat', '.sh')):
os.remove(mcpPath + file_name)
os.remove(mcpPath + "CHANGELOG")
os.remove(mcpPath + "LICENSE.txt")
urllib.request.urlretrieve(updatedDecompileFile, name + "/decompile.bat")
... this is where I would need to run the batch file ...
setup()
当前,由于存在运行批处理文件提示无法找到路径的问题,我让用户进入指定目录并在其中运行批处理文件。这是供参考的批处理文件:
@echo off
runtime\bin\python\python_mcp runtime\decompile.py
pause
此批处理脚本调用的Python文件要求路径为syspath\project\Client
。
但是,当从目录syspath\project
中的Python脚本以编程方式调用批处理文件时,会引发错误。但是,当手动执行syspath\project\Client
中的文件时,它可以按预期运行。
我认为答案是从上面显示的批处理文件传递到执行的Python脚本的path参数。因此,我是Python的新手,我能想到的唯一解决方法是“欺骗”路径,以便它告诉Python文件是在syspath\project\Client
而非syspath\project
中执行的。
如果您需要任何更多信息,请告诉我,而不会让我的帖子太冗长,我试图解决我的问题。