首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Numpy genfromtxt和PyQt文件处理(bug ?)

Numpy genfromtxt和PyQt文件处理(bug ?)
EN

Stack Overflow用户
提问于 2012-03-09 02:17:45
回答 1查看 835关注 0票数 1

我正在尝试创建一个非常简单的独立应用程序,将CATIA .dat文件转换为ProCast的csv。

我有一个Qtwidget文件对话框来获取.dat文件:

代码语言:javascript
复制
app = QtGui.QApplication(sys.argv)
widget = QtGui.QWidget()
widget.show()
DATFILE = QtGui.QFileDialog.getOpenFileName(widget, 'Open File', '.')
NODES, ELEMENTS, CONNECT = read(DATFILE)

要从文件加载数据,我首先使用.dat (文件)和while循环,然后对文件的其余部分使用np.genfromtxt,如下所示:

代码语言:javascript
复制
def read(infile):
    with open(infile, 'r') as inf:
        line = inf.readline()
        while "NODES" not in line:
            line = inf.readline()
        inf.readline()
        line = inf.readline()
        list_nodes = []
        while '$' not in line:
            x, y = line.split()[2:4]
            z = inf.readline().split()[2]
            list_nodes.append([float(x), float(y), float(z)])
            line = inf.readline()
    num_nodes = len(list_nodes)
    nodes = np.zeros((num_nodes, 4))
    nodes[:, 0] = np.arange(1, num_nodes+1)
    for n in range(len(list_nodes)):
        nodes[n, 1:] = np.fromiter(list_nodes[n], dtype=float)
skipheader = np.size(nodes, axis=0)*2+12
elements = np.genfromtxt(infile, dtype=int, comments='$', skip_footer=1,
                         skip_header=skiph, usecols=(3,4,5))

当我运行my read函数时,我输入了一个字符串作为infile参数,它工作得很好,但是当我尝试使用PyQt文件对话框给我的文件路径时,numpy.genfromtxt失败了:

代码语言:javascript
复制
Traceback (most recent call last):
File "E:\Felix\PJE\BOLOS\bolos.py", line 62, in <module>
NODES, ELEMENTS, CONNECT = lire(DATFILE)
File "E:\Felix\PJE\BOLOS\bolos.py", line 36, in lire
skip_header=skiph, usecols=(3,4,5))
File "C:\Python27\lib\site-packages\numpy\lib\npyio.py", line 1265, in genfromtxt
fhd.next()
StopIteration

根据我在npyio.py中读取的内容,当它跳过我用skip_header指定的行时会发生错误,但我不知道为什么它现在会失败,而不是在我手动输入文件名时失败,因为读取函数的另一部分工作正常。

另外,如果是文件名问题,错误不会更早出现吗?有没有人能看到我犯的这个错误(可能是愚蠢和粗俗的)?

我在windows7上运行python 2.7,Numpy 1.6.1。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-09 17:53:59

QFileDialog.getOpenFileName()返回传递给函数的QString。如果将路径作为您键入的字符串传递时,它可以正常工作,我猜这是您输入的Python字符串?

尝试将QString转换为Python字符串,看看这样做是否能解决问题。

DATFILE = str(QtGui.QFileDialog.getOpenFileName(widget, 'Open File', '.'))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9622685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档