小编Vic*_*ice的帖子

InterfaceError:无法获取Oracle环境句柄; ORACLE_HOME是正确的,SQL*Plus将连接

我在尝试导入cx_Oracle时遇到标准的"DLL加载失败;找不到模块"错误.我安装了正确的即时客户端,路径都正确...运行Dependency Walker告诉我我错过了以下.dll的MSVCR90,GPSVC,IESHIMS.

我正在运行Oracle 11g和Python 2.7的即时客户端.有人有主意吗?我发现的大多数答案都带有不正确的路径,但似乎并非如此......此外,我找不到任何其他的.dll在我的系统上的任何其他位置.

编辑:我最终安装了Oracle XE 11g(32位); Python 2.7和cx_Oracle都是32位(我还应该添加我在Windows上).cx_Oracle现在安装得很干净; 但是在连接时我收到一个错误:

InterfaceError: Unable to acquire Oracle environment handle
Run Code Online (Sandbox Code Playgroud)

ORACLE_HOME路径是正确的,PATH文件夹中的bin也是正确的...

python oracle cx-oracle

12
推荐指数
2
解决办法
2万
查看次数

用户输入变量在cx_Oracle中?

我正在使用cx_Oracle来访问我们的数据库.我希望用户能够输入电台ID,例如:

stationID =(无论用户在提示时输入什么)

cursor.execute('''select cruise, station, stratum
          from union_fscs_svsta
          where station=stationID
          order by cruise''')
Run Code Online (Sandbox Code Playgroud)

因为语句需要是一个字符串,我如何合并一个用户定义的变量?

python oracle cx-oracle

5
推荐指数
1
解决办法
8285
查看次数

将QTableWidget写入.csv或.xls

是否可以将QTableWidget的内容写入csv?我发现了一个关于使用xlwt写入.xls的问题,但似乎无法使用我的代码使其工作.

def saveFile(self):
    filename = unicode(QtGui.QFileDialog.getSaveFileName(self, 'Save File', '', ".xls(*.xls)"))    
    wbk = xlwt.Workbook()
    self.sheet = wbk.add_sheet("sheet")
    self.write()
    wbk.save(filename)    


def write(self):
    for col in range (self.coordinates.columnCount()):
        for row in range(self.coordinates.rowCount()):
            text=str(self.coordinates.item(row,col).text())
            self.sheet.write(row,col,text)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

  File "C:\Users\Tory\Desktop\DIDSON.py", line 186, in saveFile
    self.write()
  File "C:\Users\Tory\Desktop\DIDSON.py", line 192, in write
    text=str(self.coordinates.item(row,col).text())
AttributeError: 'NoneType' object has no attribute 'text'
Run Code Online (Sandbox Code Playgroud)

为什么是这样?self.coordinates是一个QTableWidget.我能够将项目本身成功保存到工作表中,虽然我仍然想保存为.csv ...

python pyqt qtablewidget xlwt

3
推荐指数
1
解决办法
8961
查看次数

将滑块连接到PyQt中的图形视图

我正在尝试显示从二进制文件读入的图像数据(我编写的代码用于从文件中检索此数据并将其存储为用于QImage()的图像).我想要做的是将滑块连接到图形视图小部件,这样当您移动滑块时,它会移动帧并显示该帧中的图像(这些是长度为1-500帧的回波图).我对PyQt很新,很奇怪人们甚至可以开始这样做吗?

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import numpy as np



class FileHeader(object):

    fileheader_fields=      ("filetype","fileversion","numframes","framerate","resolution","numbeams","samplerate","samplesperchannel","receivergain","windowstart","winlengthsindex","reverse","serialnumber","date","idstring","ID1","ID2","ID3","ID4","framestart","frameend","timelapse","recordInterval","radioseconds","frameinterval","userassigned")
   fileheader_formats=('S3','B','i4','i4','i4','i4','f','i4','i4','i4','i4','i4','i4','S32','S256','i4','i4','i4','i4','i4','i4','i4','i4','i4','i4','S136')

    def __init__(self,filename,parent=None):
        a=QApplication([])
        filename=str(QFileDialog.getOpenFileName(None,"open file","C:/vprice/DIDSON/DIDSON Data","*.ddf"))
        self.infile=open(filename, 'rb')
        dtype=dict(names=self.fileheader_fields, formats=self.fileheader_formats)
        self.fileheader=np.fromfile(self.infile, dtype=dtype, count=1)
        self.fileheader_length=self.infile.tell()


    for field in self.fileheader_fields:
        setattr(self,field,self.fileheader[field])



    def get_frame_first(self):
        frame=Frame(self.infile)
        print self.fileheader
        self.infile.seek(self.fileheader_length)
        print frame.frameheader
        print frame.data



    def __iter__(self):
        self.infile.seek(self.fileheader_length)

    for _ in range(self.numframes):
        yield Frame(self.infile)

    #def close(self):
        #self.infile.close()
    def display(self):
        print self.fileheader


class Frame(object):
    frameheader_fields=("framenumber","frametime","version","status","year","month","day","hour","minute","second","hsecond","transmit","windowstart","index","threshold","intensity","receivergain","degc1","degc2","humidity","focus","battery","status1","status2","velocity","depth","altitude","pitch","pitchrate","roll","rollrate","heading","headingrate","sonarpan","sonartilt","sonarroll","latitude","longitude","sonarposition","configflags","userassigned")
    frameheader_formats=("i4","2i4","S4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","i4","S16","S16","f","f","f","f","f","f","f","f","f","f","f","f","f8","f8","f","i4","S60")
    data_format="uint8"

    def __init__(self,infile):

        dtype=dict(names=self.frameheader_fields,formats=self.frameheader_formats)
        self.frameheader=np.fromfile(infile,dtype=dtype,count=1)


        for field in self.frameheader_fields:
            setattr(self,field,self.frameheader[field])

        ncols,nrows=96,512


        self.data=np.fromfile(infile,self.data_format,count=ncols*nrows)

        self.data=self.data.reshape((nrows,ncols)) …
Run Code Online (Sandbox Code Playgroud)

pyqt qimage custom-widgets

2
推荐指数
1
解决办法
3122
查看次数

QSlider和Key Press活动

我目前有一个QSlider,可以使用鼠标滚动图像数据帧.我希望能够使用箭头键滚动单步(一帧).

这是我当前的sliderMoved代码:

def sliderMoved(self,val):
    """
    retrieves the data array for the index value specified by the slider
    """

    if self.fileheader is None:
        print "[DEBUG] change_image_index(): self.fileheader is None"
        return

    idx=val
    self.x=idx
    frame=self.fileheader.frameAtIndex(idx)
    image=scipy.ndimage.filters.maximum_filter(frame.data, size=5)

    self.image.setImage(image, scale=((10.28/512),(2.486/96)))
    print self.image.imageItem.pixelSize()

    def keyPressEvent(self, event):
        if event.key()==Qt.Key_Right:
            frame=self.fileheader.frameAtIndex(idx+1)
Run Code Online (Sandbox Code Playgroud)

要将滑块连接到事件,我只需使用:

self.slider.sliderMoved.connect(self.sliderMoved)
self.slider.sliderMoved.connect(self.keyPressEvent)
Run Code Online (Sandbox Code Playgroud)

箭头键移动滑块,但它不会导致图像跳过帧...我知道我在这里错过了一些愚蠢的东西......

python signals pyqt qslider

2
推荐指数
1
解决办法
4164
查看次数

在python中将两个CSV与唯一列合并

我有两个CSV文件代表两个不同年份的数据.我知道如何使用csvwriter和dictkeys进行基本合并,但问题在于:虽然CSV主要是共享列标题,但每个列可能都有唯一的列.如果一个物种在一年内被捕获而不是另一个物种捕获,则该列仅在那一年出现.如何将新数据合并到旧数据,创建新列并在这些列中填零旧数据?

档案1: "Date","Time","Species A","Species B", "Species X"

文件2: "Date","Time", "Species A", "Species B", "Species C"

我需要最终结果是这个标题的一个csv:"Date","Time","Species A","Species B", "Species C", "Species X"

python csv

2
推荐指数
1
解决办法
1596
查看次数