In this example we read all CSV files from a given folder and then get each record either as List or a Dictionary based on what function is used. In the case of csv.DictReader it automatically takes the first row values as keys to the dictionary.
|
Sample CSV file with US cities
ID,Name,CountryCode,District,Population 3793,"New York",USA,"New York",8008278 3794,"Los Angeles",USA,California,3694820 3795,Chicago,USA,Illinois,2896016 3796,Houston,USA,Texas,1953631 3797,Philadelphia,USA,Pennsylvania,1517550 3798,Phoenix,USA,Arizona,1321045 3799,"San Diego",USA,California,1223400 3800,Dallas,USA,Texas,1188580
Parsed CSV file in List format
['ID', 'Name', 'CountryCode', 'District', 'Population'] ['3793', 'New York', 'USA', 'New York', '8008278'] ['3794', 'Los Angeles', 'USA', 'California', '3694820'] ['3795', 'Chicago', 'USA', 'Illinois', '2896016'] ['3796', 'Houston', 'USA', 'Texas', '1953631'] ['3797', 'Philadelphia', 'USA', 'Pennsylvania', '1517550'] ['3798', 'Phoenix', 'USA', 'Arizona', '1321045'] ['3799', 'San Diego', 'USA', 'California', '1223400'] ['3800', 'Dallas', 'USA', 'Texas', '1188580']
Parsed CSV file in a Dictionary format
{'Name': 'New York', 'CountryCode': 'USA', 'Population': '8008278', 'ID': '3793', 'District': 'New York'}
{'Name': 'Los Angeles', 'CountryCode': 'USA', 'Population': '3694820', 'ID': '3794', 'District': 'California'}
{'Name': 'Chicago', 'CountryCode': 'USA', 'Population': '2896016', 'ID': '3795', 'District': 'Illinois'}
{'Name': 'Houston', 'CountryCode': 'USA', 'Population': '1953631', 'ID': '3796', 'District': 'Texas'}
{'Name': 'Philadelphia', 'CountryCode': 'USA', 'Population': '1517550', 'ID': '3797', 'District': 'Pennsylvania'}
{'Name': 'Phoenix', 'CountryCode': 'USA', 'Population': '1321045', 'ID': '3798', 'District': 'Arizona'}
{'Name': 'San Diego', 'CountryCode': 'USA', 'Population': '1223400', 'ID': '3799', 'District': 'California'}
{'Name': 'Dallas', 'CountryCode': 'USA', 'Population': '1188580', 'ID': '3800', 'District': 'Texas'}
Source code for the Python module
import os
import csv
def readMyFiles(filePath):
#get all files in the given folder
fileListing = os.listdir(filePath)
for myFile in fileListing:
#create the file path
myFilePath = os.path.join(filePath, myFile)
#check to make sure its a file not a sub folder
if (os.path.isfile(myFilePath) and myFilePath.endswith(".csv")):
with open(myFilePath, 'r', encoding='utf-8') as csvfile:
#sniff to find the format
fileDialect = csv.Sniffer().sniff(csvfile.read(1024))
csvfile.seek(0)
#create a CSV reader
myReader = csv.reader(csvfile, dialect=fileDialect)
#read each row
for row in myReader:
#do your processing here
print(row)
with open(myFilePath, 'r', encoding='utf-8') as csvfile:
#sniff to find the format
fileDialect = csv.Sniffer().sniff(csvfile.read(1024))
csvfile.seek(0)
#read the CSV file into a dictionary
dictReader = csv.DictReader(csvfile, dialect=fileDialect)
for row in dictReader:
#do your processing here
print(row)
return
if __name__ == '__main__':
#print a list of available dialects
print(csv.list_dialects())
#path for the current file
currentPath = os.path.dirname(__file__)
#path for the filename that we want to read
filePath = os.path.abspath(os.path.join(currentPath, os.pardir,os.pardir,'data'))
readMyFiles(filePath)

No comments:
Post a Comment
NO JUNK, Please try to keep this clean and related to the topic at hand.
Comments are for users to ask questions, collaborate or improve on existing.