目标
这个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.call
,subprocess.run
和subprocess.check_output
。