Skip to content

Commit c4cc954

Browse files
committed
[processing] restore functionality of the TableWriter class (fix #16053)
1 parent e01c476 commit c4cc954

File tree

1 file changed

+6
-33
lines changed

1 file changed

+6
-33
lines changed

python/plugins/processing/tools/vector.py

Lines changed: 6 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@
3737
import os
3838
import csv
3939
import uuid
40-
import codecs
41-
import io
4240

4341
import psycopg2
4442
from osgeo import ogr
@@ -768,42 +766,17 @@ def __init__(self, fileName, encoding, fields):
768766
if self.encoding is None or encoding == 'System':
769767
self.encoding = 'utf-8'
770768

771-
with open(self.fileName, 'wb') as csvFile:
772-
self.writer = UnicodeWriter(csvFile, encoding=self.encoding)
769+
with open(self.fileName, 'w', newline='', encoding=self.encoding) as f:
770+
self.writer = csv.writer(f)
773771
if len(fields) != 0:
774772
self.writer.writerow(fields)
775773

776774
def addRecord(self, values):
777-
with open(self.fileName, 'ab') as csvFile:
778-
self.writer = UnicodeWriter(csvFile, encoding=self.encoding)
775+
with open(self.fileName, 'a', newline='', encoding=self.encoding) as f:
776+
self.writer = csv.writer(f)
779777
self.writer.writerow(values)
780778

781779
def addRecords(self, records):
782-
with open(self.fileName, 'ab') as csvFile:
783-
self.writer = UnicodeWriter(csvFile, encoding=self.encoding)
780+
with open(self.fileName, 'a', newline='', encoding=self.encoding) as f:
781+
self.writer = cvs.writer(f)
784782
self.writer.writerows(records)
785-
786-
787-
class UnicodeWriter(object):
788-
789-
def __init__(self, f, dialect=csv.excel, encoding='utf-8', **kwds):
790-
self.queue = io.StringIO()
791-
self.writer = csv.writer(self.queue, dialect=dialect, **kwds)
792-
self.stream = f
793-
self.encoder = codecs.getincrementalencoder(encoding)()
794-
795-
def writerow(self, row):
796-
row = list(map(str, row))
797-
try:
798-
self.writer.writerow([s.encode('utf-8') for s in row])
799-
except:
800-
self.writer.writerow(row)
801-
data = self.queue.getvalue()
802-
data = data.decode('utf-8')
803-
data = self.encoder.encode(data)
804-
self.stream.write(data)
805-
self.queue.truncate(0)
806-
807-
def writerows(self, rows):
808-
for row in rows:
809-
self.writerow(row)

0 commit comments

Comments
 (0)