Reputation: 1
I try to build data elimination code in python. In this script I try to apply some criteria to eliminate data file and save new data file with the imput that have defined value greater than 0.003 for example. Why do I get this error in these python script ? I added errors and script together. Which point that Ive failed ?
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import csv
import itertools
import math
def main():
# ******
f = open("deneme.csv", "r")
reader = csv.reader(f)
lines = itertools.islice(reader, 3, None, 5)
n = open("results.csv", "wb")
wr = csv.writer(n, quoting = csv.QUOTE_ALL)
counter = 0
line_count = 0
for line in lines:
line_count += 5
w, h = 3, 3
matrix = [[0 for x in range(w)] for y in range(h)]
matrix[0][0] = float(line[1]) * (10 ** float(line[0]))
matrix[0][1] = float(line[11]) * (10 ** float(line[0]))
matrix[0][2] = float(line[9]) * (10 ** float(line[0]))
matrix[1][0] = float(line[11]) * (10 ** float(line[0]))
matrix[1][1] = float(line[3]) * (10 ** float(line[0]))
matrix[1][2] = float(line[7]) * (10 ** float(line[0]))
matrix[2][0] = float(line[9]) * (10 ** float(line[0]))
matrix[2][1] = float(line[7]) * (10 ** float(line[0]))
matrix[2][2] = float(line[5]) * (10 ** float(line[0]))
trace = (matrix[0][0] + matrix[1][1] + matrix[2][2]) / 3
norm = 0
for i in range(3):
for x in range(3):
norm += matrix[i][x] * matrix[i][x]
norm = math.sqrt(norm)
if (trace / norm) > 0.0003:
print(line_count - 4, line_count)
# ******
f = open("deneme.csv", "r")
reader = csv.reader(f)
rows = itertools.islice(reader, line_count - 5, line_count, None)
for i in rows:
print(i)
wr.writerow(i)
counter += 1
print(line[0])
print(matrix)
print(trace)
print(norm)
print('buyuk')
print('____________**********____________')
print(counter)
if __name__ == "__main__":
main()
Any advice for this case ? Thanks in advance. I also add csv files in here Error;
Traceback (most recent call last):
File "/Users/gokceoter/PycharmProjects/CMT/cmttt.py", line 74, in <module>
21 25
['PDEW', '39083', '00:31:45.0', '1.23', '67.12', '10', '5.1', '5.4', 'CARLSBERG', 'RIDGE', '', '', '', '', '', '', '']
main()
File "/Users/gokceoter/PycharmProjects/CMT/cmttt.py", line 58, in main
wr.writerow(i)
TypeError: a bytes-like object is required, not 'str'
Upvotes: 0
Views: 50
Reputation: 54163
You've opened the output file in binary mode
n = open("results.csv", "wb") # <---------- the `b` here
wr = csv.writer(n, quoting = csv.QUOTE_ALL)
so writes to that file expect a bytes
object not a str
object. You can convert between the two with str.encode
and bytes.decode
.
for row in rows: # why would you use `i` here? Don't.
wr.writerow(row.encode())
Upvotes: 1