我有这个程序可以解析文件路径并获取所有以某个结尾结尾的文件。然后我必须使用创建这些列表的子进程来运行 msbuild 并打印结果。
MSprompt = 'C:\Windows\Microsoft.NET\Framework64\\v4.0.30319\\MSBuild.exe' #MSPrompt is the string that is used w/ the subprocess function to open up MSBuild and run it correctly
MSfilename= "C:\\Users\\bgbesase\\Documents\\Brent\\Code\\Visual Studio\\"
def getUnitTest(path):
foundFiles = []
foundPathUpToUnitTests = []
for r,d,f in os.walk(path):
for files in f:
if files.endswith('.UnitTests.vbproj'):
path2 = os.path.split(files)
#print path2
foundFiles.append(path2)
for lines in path2:
if lines.endswith('.vbproj'):
s = lines.strip('vbproj')
print s
foundPathUpToUnitTests.append(s)
foundFiles= [str(value[1]) for value in foundFiles]
return foundFiles
foundFiles2 = [ str(value for value in file if value) for file in foundFiles]
print foundFiles2
return foundPathUpToUnitTests
FoundFiles 是由以“.UnitTests.vbproj”结尾的文件名元组组成的列表
foundFiles = [
bb.APDS.UnitTests.vbproj
bb.DatabaseAPI.UnitTests.vbproj
bb.DataManagement.UnitTests.vbproj
bb.FormControls.UnitTests.vbproj
bb.Geometry.UnitTests.vbproj ]
foundPathUpToUnitTests 是一个列表,它与 foundFiles 中的值相同,只是没有 vb.proj 部分。
foundPathUpToUnitTests = [
bb.APDS.UnitTests.
bb.DatabaseAPI.UnitTests.
bb.DataManagement.UnitTests.
bb.FormControls.UnitTests. ]
我对子进程的功能是这样的:
def runMSBuild(foundFiles2, foundPathUpToUnitTests):
p = subprocess.Popen([msprompt, MSfilename + foundFiles2 + "\\" + foundPathUpToUnitTests], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout.readlines():
print line,
retval = p.wait()
当我使用 MSpromt 和 MSFilename 正常运行它时,它可以工作,但是我需要做的是创建一个循环,从 foundFiles 和 foundPathUpToUnitTests 获取第一个值,并使用连接来获取正确的文件路径,以便 MSBuild 可以正常运行,我不知道这个怎么做。任何帮助将不胜感激我已经坚持了一段时间,在此先感谢!