Python 3.x 从Python调用批处理文件时不会运行

Python 3.x 从Python调用批处理文件时不会运行,python-3.x,batch-file,Python 3.x,Batch File,我正在尝试自动化一些文件处理,当您使用STRaitRazor对fastq文件进行数据分析时会发生这种情况。简单地说,文件本身是gzip文件,批处理文件查看这些内容,提取必要的信息,然后将其存储在它创建的新文件夹中。手动操作效果很好,但当我尝试使用Python调用批处理文件时,窗口会在一瞬间打开,然后消失而不运行 我已经包括了我在这里使用的基本代码。没有错误消息,但批处理文件未运行。我试着在语法中用“Popen”和“run”替换“call”,但这也不起作用 导入子流程 batch=“C:\\STR

我正在尝试自动化一些文件处理,当您使用STRaitRazor对fastq文件进行数据分析时会发生这种情况。简单地说,文件本身是gzip文件,批处理文件查看这些内容,提取必要的信息,然后将其存储在它创建的新文件夹中。手动操作效果很好,但当我尝试使用Python调用批处理文件时,窗口会在一瞬间打开,然后消失而不运行

我已经包括了我在这里使用的基本代码。没有错误消息,但批处理文件未运行。我试着在语法中用“Popen”和“run”替换“call”,但这也不起作用

导入子流程
batch=“C:\\STRaitRazor\\Analysis\\fastq\\Data\u 2\\batchCstr8.bat”
子进程调用([r”%s“%batch]”)

首先,我建议从命令行调用此脚本,查看它输出的错误。但是,作为猜测,我假设批处理文件失败,因为它不是从它期望从的目录运行的,您需要先更改到它的目录:

import subprocess
import os

batch = "C:\\STRaitRazor\\Analysis\\fastq\\Data_2\\batchCstr8.bat"

# Get the current directory, and change to the directory that batch file is in
previous_dir = os.getcwd()
os.chdir(os.path.dirname(batch))

# Run the batch file (note:  don't need the % operator here, also, use check_call
# to raise an exception if calling the batch file fails)
subprocess.check_call([batch])

# Change back to the old working directory, not necessary, but helpful
# if there are any other steps to run after the batch file is done
os.chdir(previous_dir)

你是绝对正确的,这就是最终成功的原因。当我想运行批处理文件时,我必须插入代码行来更改目录。我还遇到了一个问题,我的代码意外地删除了一个要复制的zip文件,而不是它放在新目录中的副本。更改目录也解决了这个问题。