我为DOORS 9.5编写了一个脚本,该脚本在DOORS模块中查找特定的对象,并将其写入csv文件中。但是,在特定数量的行之后,它停止在csv文件中写入,而我仅得到了我请求的对象的一半。
我正在使用在互联网上找到的字符串替换函数。因此,这也许就是问题所在,或者dxl是否可以在CSV文件中写入最大值?
如果有人可以帮助我,这将非常好,因为我无法在互联网上找到任何解决方案,也无法理解为什么这行不通。
// String replacement function
string replace (string sSource, string sSearch, string sReplace)
{
int iLen = length sSource
if (iLen == 0) return ""
int iLenSearch = length(sSearch)
if (iLenSearch == 0)
{
print "search string must not be empty"
return ""
}
// read the first char for latter comparison -> speed optimization
char firstChar = sSearch[0]
Buffer s = create()
int pos = 0, d1,d2;
int i
while (pos < iLen) {
char ch = sSource[pos];
bool found = true
if (ch != firstChar) {pos ++; s+= ch; continue}
for (i = 1; i < iLenSearch; i++)
if (sSource[pos+i] != sSearch[i]) { found = false; break }
if (!found) {pos++; s+= ch; continue}
s += sReplace
pos += iLenSearch
}
string result = stringOf s
delete s
return result
}
Module m = read(modulePath, false)
Object o
string s
string eval
Stream outfile = write("D:\\Python\\Toolbeta\\data\\modules\\test.csv")
for o in m do
{
eval = o."Evaluation Spec Filter"
if(eval == "Evaluation Step Object")
{
s = o."Object Text"
s = replace(s,"\n","\\n")
outfile2 << o."HierarchyNumber" ";" s "\n"
}
}
close outfile
最佳答案
我终于找到了解决我问题的方法(我知道replace函数有点糟糕^^)。
dxl脚本似乎具有内部计时器。计时器到时,即使进程仍在执行,脚本也会自动结束。因此,我的脚本总是在x秒后停止运行,这就是我从未在csv文件中获得所有数据的原因。
如果您有相同的问题,请尝试pragma runLim,0
。它将计时器设置为无限制。您还可以通过将0替换为任意数字来选择计时器。 (对我而言,200万个最合适)。
感谢所有答案和帮助
关于python - 用dxl将DOORS对象导出到csv文件中会不会写入所有对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30186013/