[Tutor] csv.reader: bad argument type
kent37 at tds.net
Wed Jan 23 14:04:46 CET 2008
tetsuo2k6 at web.de wrote:
> import csv
> import MySQLdb
> import sys
> datei = sys.argv
> print("Usage: insert_into_db <.csv-file>")
> # convert csv to list
> reader = csv.reader(open(datei, "rb"), delimiter = ";", quotechar = "",
> quoting = csv.QUOTE_NONE)
> After copying it to the server, it says:
> server1:/usr/local/sbin# ./insert_dgf_customers.py /usr/local/sbin/my.csv
> Traceback (most recent call last):
> File "./insert_dgf_customers.py", line 27, in ?
> reader = csv.reader(open(datei, "rb"), delimiter = ";", quotechar =
> "", quoting = csv.QUOTE_NONE)
> TypeError: bad argument type for built-in operation
> The file my.csv is a test file and correctly formatted (it's the same
> file that worked on the other machine).
It doesn't seem to get as far as actually reading the file.
> I thought the built-in operation meant here is open(), but without
> putting csv.reader() around it everything works fine... And I guess
> csv.reader is _not_ built-in, for it from the module - is that correct?
csv.reader is not built-in, that is correct. But it is implemented in C
so you won't get a good traceback into where the failure is actually
What version of Python is on the two machines?
A couple of things to try, maybe some hints will come out:
- print the value of datei just to make sure nothing funny there
- split the open to a separate line to make sure it is the call to
reader that is the problem:
f = open(datei, "rb")
reader = csv.reader(f, delimiter = ";", quotechar = "", quoting =
More information about the Tutor