![]() |
A simple csv code - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: A simple csv code (/thread-14880.html) |
A simple csv code - Truman - Dec-21-2018 import csv csvFile = open("c:\Python36\files\test.csv", 'w+') try: writer = csv.writer(csvFile) writer.writerow(('number', 'number plus 2', 'number times 2')) for i in range(10): writer.writerow(i, i+2, i*2) finally: csvFile.close() What did I do wrong? Tried several combinations with several paths but it gave me similar error. I didn't create files directory, expecting that it will be created as per this code.
RE: A simple csv code - nilamo - Dec-21-2018 The backslash is an escape character. So you need to either: 1) escape it: "c:\\Python36\\files\\test.csv" 2) use a raw string: r"c:\Python36\files\test.csv" 3) use forward slashes: "c:/Python36/files/test.csv" You can tell this from the error message, where instead of "files", it's looking for a folder called "Python36\x0ciles". RE: A simple csv code - ichabod801 - Dec-21-2018 Backslash is an escape character in Python. You can do three things: use forward slashes instead (they'll work on any system), use two backslashes everytime you want one, or make it a raw string that ignores escape characters by putting an r in front it. RE: A simple csv code - buran - Dec-21-2018 Don't use backslash as separator, It's an escape char, so '\t' is actually Tab. make "c:\Python36\files\test.csv" raw string - r"c:\Python36\files\test.csv" use forward slash "c:/Python36/files?test.csv" or escape the backslash "c:\\Python36\\files\\test.csv" I think this deserves a thread in Common pitfalls and what to do :-) RE: A simple csv code - Truman - Dec-21-2018 Thank you, I opted for a raw string and now get this error: strange that it takes only one argument...
RE: A simple csv code - buran - Dec-21-2018 you must supply list, tuple, etc. writer.writerow((i, i+2, i*2)) as an alternative to for i in range(10): writer.writerow((i, i+2, i*2))you can do writer.writerows((i, i+2, i*2) for i in range(10))Some more advise - use with context manager to open the file (it will close it for you at the end automatically). You don't need the try/finally import csv with open(r"c:\Python36\files\test.csv", 'w') as csv_file: writer = csv.writer(csv_file) writer.writerow(('number', 'number plus 2', 'number times 2')) writer.writerows((i, i+2, i*2) for i in range(10)) RE: A simple csv code - woooee - Dec-21-2018 Quote:strange that it takes only one argument...There are many examples of the expected syntax format on the web . RE: A simple csv code - Truman - Dec-21-2018 What is strange is that I found this example in the pretty known book on web scraping. RE: A simple csv code - Truman - Dec-21-2018 practising csv I wrote this code: with open('example.csv', 'r') as exampleFile: exampleReader = csv.reader(exampleFile) for line in exampleReader: print('Line #' + str(exampleReader.line_num) + ' ' + str(line))this is what I get: Do you know what to do to eliminate this '\t'? I don't understand why this tab sign appears at all since I didn't add it.
RE: A simple csv code - gehrenfeld - Dec-22-2018 exampleReader = csv.reader(exampleFile, delimiter='\t') |