为什么subprocess给出Error:无法打开输出

时间:2018-04-14 23:25:59

标签: python python-3.x unix subprocess popen

目标

这个Python程序将97个unix命令写入97个单独的列表,以便使用子进程Popen / run函数进行处理。

编写的unix命令调用应用程序,应用程序的命令以及应用程序需要运行的输入/输出文件。

程序检查文件名是否在全局列表中,如果没有,则使用subprocess.Popen([每个97 unix命令])运行程序,并将文件名插入列表中。

import subprocess
import time
import sys 
import os

def readFilenames(sent_directory):

    for root, dirs, files in os.walk(sent_directory, topdown=False):
        for name in files:
            currentFilePath = (os.path.abspath(os.path.join(root, name)))
            currentFileName = (os.path.join(root, name))[21:-5]

            scriptEx(currentFilePath, currentFileName)



def scriptEx(path, name):

    global idxlist

    idx = name + 'idx'
    args = (['application', '[CMD]', '[CMD]', idx, path])


    process(idx, args, idxlist)


def process(idx, args, idxlist):

    if idx in idxlist:
        return

    else:
        subprocess.Popen(args)
        idxlist.append(idx)
        time.sleep(400)


if __name__ == '__main__':

    directory_name=sys.argv[0]

    try:
        directory_name=sys.argv[1]

    except:
        print('\nPlease pass directory name\n\n')

    idxlist = []
    readFilenames(directory_name)

输出

在从应用程序实时打印到屏幕的输出中,有一条我单独运行命令时不会遇到的行。

Error: index output file could not be opened!

应用程序没有输出文件,因为我运行这个Python程序时应该有。

失败的解决方案

我找到一个提到这个特定错误的来源。唯一的答复是询问OP他/她是否可以touch input_file

认为这是一个权限问题,我chmod 777一切都无济于事,touch all_input_files

此外,我尝试过subprocess.callsubprocess.runsubprocess.check_output

0 个答案:

没有答案