我试图在打开文件时使用'w'标签,但它会使行间隔两倍,导致读取无效.所以我发现更改为'wb'将是正确的格式.现在我正在使用'wb'标志,我无法使csv.writer.writerow()工作.我已经编码了所有的字符串,并且因为我一直收到这个错误而丢失了.我看到的所有问题都说b'string在这里'或myString.encode('ascii')解决了我得到的错误,但它并没有为我解决.这是我有的:
dataWriter = csv.writer(open(fileName, 'wb'))
for i in range(self.ui.table.rowCount()):
rowData = [self.ui.table.item(i,0).text().encode('utf-8')\
,self.ui.table.item(i,1).text().encode('utf-8')\
,self.ui.table.item(i,2).text().encode('utf-8')\
,self.ui.table.item(i,3).text().encode('utf-8')\
,self.ui.table.item(i,4).text().encode('utf-8')]
dataWriter.writerow(rowData)
Run Code Online (Sandbox Code Playgroud)
我认为这将工作,但它仍然给我以下错误:"TypeError:必须是字节或缓冲区,而不是str"在行"dataWriter.writerow(rowData)".
任何帮助都会被贬低.谢谢.
我有一个PyQt4程序,我用cx_freeze冻结了.我遇到的问题是,当我创建一个QGraphicsPixmapItem,它正在获取它的'像素图由SVG文件制作时,Item没有问题,但是Pixmap没有加载所以没有图像只是场景中的项目.令我困惑的是,只有当我在不同于构建exe的计算机上运行它时,才会发生这种情况.当我在构建它的计算机上运行exe时,程序运行完美.即使我尝试在计算机上安装了所有必需的python组件和pyqt组件的计算机上运行它,如果它不是构建它的计算机,则不会从svg文件加载pixmap.我不确定这是否是我的cx_freeze setup.py文件的问题,或者如果我需要更改主代码中的内容,那么任何帮助或只是指向正确的方向将是伟大的.我的感觉是,当cx_freeze构建它时,某些东西会搞砸,所以我将粘贴下面的setup.py文件的内容.我也使用Python v3.1在Windows上运行.
from cx_Freeze import setup, Executable
files = ['drawings\\FULL', 'drawings\\PANEL', 'data.csv', 'panelData.csv']
binIncludes = ['C:\\Python31\\Lib\\site-packages\\PyQt4\\bin\\QtSvg4.dll']
includes = ['main', 'PunchDialog', 'ArrayDialog', 'PricingDialog', 'FontAndInputDialog', 'PanelSelector', 'PyQt4', 'os', 'sys', 'ctypes', 'csv']
packages = ['drawings']
path = ['C:\\Users\\Brock\\Documents\\Programming\\PanelDesigner\\DrawingFirst', 'C:\\Python31\\Lib', 'C:\\Python31\\Lib\\site-packages', 'C:\\Python31\\DLLs']
setup(
name = 'PanelBuilder',
version = '1.0',
description = 'Allows user to draw custom panel layouts.',
author = 'Brock Seabaugh',
options = {'build_exe': {'packages':packages, 'path':path, 'include_files':files, 'bin_includes':binIncludes, 'includes':includes}},
executables = [Executable('PanelBuilder.py')])
Run Code Online (Sandbox Code Playgroud)
PS.这是我的文件层次结构(如果有帮助的话):
\DrawingFirst
Main .py file
All .py files for all …
Run Code Online (Sandbox Code Playgroud) 我正在尝试从 QTreeWidget 到 QGraphicsView 执行拖放操作。dragStart() 有效,并且 dragEnterEvent() 有效,但 dropEvent() 从未被调用。此外,像素图直到光标进入 QGraphicsView 才显示,这不是问题,但我只是认为它会在拖动开始后立即出现。这是我的 startDrag 函数:
def on_list_startDrag(self, supportedActions):
#Retreive the item that was clicked on
currentPart = self.ui.list.currentItem()
part = currentPart.text(0)
drag = QtGui.QDrag(self.ui.list)
mime = QtCore.QMimeData()
print(part)
#retreive that associated graphics file
icon = QtGui.QIcon('drawings/FULL/' + part + '.svg')
pixmap = icon.pixmap(102,122)
selected = QtGui.QImage('drawings/FULL/' + part + '.svg')
data = pickle.dumps(selected)
mime.setData('application/x-item', data)
#mime.setImageData(QtGui.QImage('drawings/FULL/' + part + '.svg'))
drag.setMimeData(mime)
drag.setHotSpot(QtCore.QPoint(pixmap.width()/2, pixmap.height()/2))
drag.setPixmap(pixmap)
drag.exec_()
Run Code Online (Sandbox Code Playgroud)
这是dragEnterEvent:
def on_workArea_dragEnterEvent(self, event):
print(event.format())
if …
Run Code Online (Sandbox Code Playgroud) 我无法理解为什么在使用cx_freeze构建应用程序后我的QGraphicsPixmapItem没有出现.该类和cx_freeze是否有任何已知问题,或者我错过了cx_freeze的一些设置?以下是创建和显示QGraphicsPixmapItem的部分,之后是我的cx_freeze的setup.py:
def partNo_changed(self):
self.scene.removeItem(self.previewItem)
partNumber = self.ui.partNo.text()
fileLocation = 'drawings\\FULL\\%s.svg' % partNumber
print(fileLocation)
pixmap = QtGui.QPixmap(fileLocation)
self.previewItem = QtGui.QGraphicsPixmapItem(pixmap)
self.previewItem.setPos(0, 0)
self.scene.addItem(self.previewItem)
self.ui.svgPreview.centerOn(self.previewItem)
Run Code Online (Sandbox Code Playgroud)
这是setup.py脚本:
from cx_Freeze import setup, Executable
files = ['drawings\\FULL']
setup(
name = 'DBManager',
version = '1.0',
description = 'Makes and maintains the .csv database files.',
author = 'Brock Seabaugh',
options = {'build_exe': {'include_files':files, 'bin_path_includes':files}},
executables = [Executable('dbManager_publicDB.py')])
Run Code Online (Sandbox Code Playgroud)
其他所有东西都在程序中运行,这是唯一不起作用的东西(如果我只运行.py脚本,它会起作用,但是当我运行exe时却不行).我构建或运行exe时没有错误.如果有人可以帮助解决这个问题,那就太棒了.我正在使用Python v3.1和cx_freeze v4.2.3以及PyQt v4.