我在尝试导入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也是正确的...
我正在使用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)
因为语句需要是一个字符串,我如何合并一个用户定义的变量?
是否可以将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 ...
我正在尝试显示从二进制文件读入的图像数据(我编写的代码用于从文件中检索此数据并将其存储为用于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) 我目前有一个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)
箭头键移动滑块,但它不会导致图像跳过帧...我知道我在这里错过了一些愚蠢的东西......
我有两个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"