我为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/

10-12 18:27