பல்வேறு வகையான CSV கோப்பினுள் தரவுகளை எழுதுதல்
பைத்தானது CSV கோப்பில் பணியாற்றுவதற்கு எளிமையான வழிகளை வழங்குகிறது.
மேலும் CSV கோப்பில் தரவுகளை படிக்க மற்றும் எழுத CSV கோப்பில் தரவுகளை படிக்க மற்றும்
எழுத CSV கூறினை கொண்டுள்ளது. இதற்கு முந்தைய தலைப்புகளில் CSV கோப்பில் இருந்து தரவுகளை
எவ்வாறு படிப்பது என்பதை பற்றி பயின்றோம். அதை போலவே ஒரு புதிய CSV கோப்பினை உருவாக்கவும்
(அல்லது) ஏற்கனவே உள்ள கோப்பில் மாற்றங்கள் செய்யவும் முடியும்.
நீங்கள் CSV கோப்பினுள் சேமிப்பதற்காக தரவுகளின் தொகுப்பை கொண்டிருக்கும்
போது, இந்த சூழ்நிலையில் கொண்டிருக்கும் போது, இந்த சூழ்நிலையில் எதிர்முறையாக
write()செயற்கூறை பயன்படுத்தவும்.
Csv.writer() செயற்கூறு
writer பொருளை திருப்பி அனுப்பும் அது
பயனர் தரவை சரங்களை பிரிப்பானுடன் மாற்றி கோப்பு போன்ற பொருளை தரும். writerow() செயற்கூறு ஒரு தரவின் வரியை ஒரு
குறிப்பிட்ட கோப்பினுள் எழுதும். csv.writer()
முறையின் தொடரியல்
The
syntax for csv.writer() is
csv.writer (fileobject, delimiter, fmtparams)
இங்கு,
fileobject :- கோப்பின் பாதையையும் முறைமையும் அனுப்பும்.
delimiter : (pipe) போன்ற நிலையான Dialects பிரிப்பான்களை கொண்டிருக்கும்
விருப்ப அளபுருவாகும். மற்றவை நிராகரிக்கப்படும்.
fmtparams : விருப்ப அளபுருவாகும். skipinitialspace,
quoting போன்ற dialects களின் தானமைவான மதிப்புகளை மாற்றியமைக்க செய்ய உதவுகிறது. மற்றவை
(மாற்ற) நிராகரிக்கப்படும்
CSV உறுப்பான writer() முறையை பயன்படுத்தி தானமைவு பிரிப்பானான
காற்புள்ளியைச் சாதாரண CSV கோப்பினை நீங்கள் உருவாக்க முடியும். (எடுத்துக்காட்டு)
பின்வரும் பைத்தான் நிரலானது தரவுகளின் பட்டியலை
“Pupil.csv” எனப்படும் CSV கோப்பிற்கு மாற்றம் செய்யும். மேலும் மதிப்பு பிரிப்பானக
, (காற்புள்ளி) பயன்படுத்தப்பட்டுள்ளது.
உரைபதிப்பானை பயன்படுத்தி “Pupil.csv” என்ற கோப்பினை திறக்கும்
போது அதன் பொருடக்கமானது பின்வருமாறு தோன்றும்.
Student,
Age
Dhanush, 17
Kalyani, 18
Ram, 15
மேலே கொடுக்கப்பட்டுள்ள நிரலில் CSV.writer() செயற்கூறு எல்லா
தரவையும் “csvData” என்ற list சரங்களாக மாற்றி, உள்ளடக்கத்தை ஒரு கோப்பில் பொருளாக
உருவாக்கும். writerows () செயற்கூறு எல்லா தரவையும் ஒரு புதிய CSV கோப்பான
“Pupil.csv”-ல் எழுதும்.
குறிப்பு
writerow() முறையானது ஒரு சமயத்தில் ஒரு வரிசையை மட்டுமே எழுதும். அனைத்து தரவுகளையும் ஒரே சமயத்தில் எழுத விரும்பினால் writerows() முறையை பயன்படுத்தலாம்.
2. இருக்கும் கோப்பை மாற்றியமைத்தல்
தற்போதுள்ள கோப்பின் தரவில் சில மாற்றங்களைச் செய்வது அல்லது
கூடுதல் தரவைச் சேர்ப்பது மாற்றம் என அழைக்கப்படுகிறது .எடுத்துக்காட்டக
“student.csv" கோப்பு பின்வரும் தரவைக் கொண்டுள்ளது.
மேற்கண்ட நிரலானது "student.csv” கோப்பினில் ஒரு புதிய
வரிசையை சேர்க்கும். இப்பயன்பாட்டிற்காக மட்டுமே CSV கோப்பானது 'a' append திறக்கப்படுகிறது.
Append முறையானது "student.csv” கோப்பின் கடைசி வரியின் அடுத்து புதிய வரிசையில்
மதிப்புகளை எழுதும்.
குறிப்பு
The writerow() முறை ஒரு நேரத்தில் ஒரு வரிசையை எழுதுகிறது. நீங்கள் எல்லா தரவையும் ஒரே நேரத்தில் எழுத வேண்டும் என்றால் நீங்கள் writerows()முறையைப் பயன்படுத்தலாம்.
ஏற்கனவே உள்ள கோப்பினில் சில மாற்றங்களை செய்தல் அல்லது மேலும்
புதிய தரவுகளை சேர்த்தல் ஆகியவை மாற்றம் செய்தல் எனப்படும்.
S
No, Name, City,
1, Harshini, Chennai
2, Adhith, Mumbai
3, Dhuruv, Bangalore
4, Krishna, Tiruchy
5, Venkat, Madurai
6, Sajini, Madurai
"student.csv” என்ற
கோப்பானது
பின்வருமாறு
தரவுகளை
கொண்டிருக்கும்.
import csv
row = [3', Meena”Bangalore]
with open('student.csv', 'r') as readFile:
reader = csv.reader(readFile)
lines = list(reader) # list()- ஒவ்வொரு வரிசையான தரவை ஒரு Listஆக சேமிக்கும்
lines[3] = row
with open('student.csv', 'w') as writeFile:
# பயனர் தரவை பிரிப்பானுடன் மாற்றியமைத்து திருப்பி அனுப்பும் writer பொருள்
writer = csv.writer(writeFile)
#writerows() செயற்கூறு CSV கோப்பில் ஒன்றிக்கு
writer.writerows(lines)
readFile.close()
writeFile.close()
பின்வரும் நிரலானது student.csV என்ற கோப்பில் ஏற்கனவே உள்ள
வரிசைகளின் மதிப்புகளை மாற்றம் செய்கிறது.
உரைப்பதிப்பானில் “student.csv” என்ற கோப்பினை திறக்கும் போது
வெளியீடானது பின்வருமாறு தோற்றமளிக்கும். மேற்கண்ட நிரலில் "student.csv” என்ற
கோப்பின் மூன்றாவது வரிசையானது மாற்றம் செய்யப்பட்டு சேமிக்கப்பட்டுள்ளது. முதலில்
Csv.reader() என்ற செயற்கூறு மூலம் "student.csv” என்ற கோப்பானது படிக்கப்படும்.
list() என்பதன் மூலம் கோப்பின் அனைத்து வரிசைகளும் சேமிக்கப்படும். “lines[3] =
row” என்ற கூற்றானது கோப்பினில் உள்ள 3வது வரிசையை row என்பதில் உள்ள பொருளடக்கத்தை
மாற்றம் செய்யும். writerows (lines) என்பதை கோப்பு பொருளான writer பயன்படுத்தி
"student.csv” கோப்பு மதிப்புகளை list-ல் எழுதும்.
(i) புதிய வரிசையை சேர்த்தல்
சில நேரங்களில் ஏற்கனவே உள்ள CSV கோப்பினில் புதிய வரிசையை சேர்க்க
வேண்டிய தேவை இருக்கலாம். புதிய வரிசையானது கோப்பின் இறுதியில் சேர்க்கப்படும் செயல்முறையை
ஒரு வரிசை இறுதியில் சேர்த்த ல் (appending) எனப்படும்.
பின்வரும் நிரலானது "Student.csv" கோப்பில் ஒரு புதிய
வரிசையை சேர்க்கும்.
import csv
row = ['6', 'Sajini', 'Madurai']
with open('student.csv', 'a') as CF: # append முறைமையில் தரவுகளை இறுதியில் சேர்க்க
writer = csv.writer(CF)
writer.writerow(row) # writerow() செயற்கூறில் தரவை ஒரு வரிசையாக கோப்பில் எழுத CF.close()
student.csv” கோப்பானது உரைப்பதிப்பானை பயன்படுத்தி திறக்கும்
போது அது பின்வருமாறு தோன்றும்.
Student,
Age
Dhanush, 17
Kalyani, 18
Ram, 15
மேற்கண்ட நிரலானது CSv.Writer () பட்டியலில் உள்ள எல்லா தரவையும்
சரங்களாக மாற்றுகிறது மற்றும் உள்ளடக்கத்தை பொருள் போன்ற கோப்பாக உருவாக்குகிறது.
writerrowse () முறை அனைத்து தரவையும் புதிய CSV கோப்பு “Pupil.csv” க்கு எழுதுகிறது.
'உங்களுக்குத் தெரியுமா?
‘w' write முறைமை புதிய கோப்பினை
உருவாக்க உதவுகிறது. ஏற்கனவே அக்கோப்பானது உருவாக்கப்பட்டிருந்தால் அக்கோப்பின் பெயரில்
புதிய கோப்பினை உருவாக்கும். 'a' append
முறைமையானது கோப்பானது ஏற்கனவே உருவாக்கப்பட்டிருந்தால் அதன் இறுதியில் தரவினை சேர்க்கும்.
இல்லையெனில் புதிய கோப்பினை உருவாக்கும்.
குறிப்பு
writerow() செயற்கூறானது – 1 பரிமாண தரவினையும் மற்றும் writerows() செயற்கூறானது இருபரிமாண தரவுகளையும் கோப்பினில் எழுதும்
csv.register_dialect() இனக்குழுவை
பயன்படுத்தி புதிய Dialectஐ பதிவு செய்வதன் மூலம் மேற்கோள் குறிகளுடன் CSV கோப்பினை
எழுதலாம். பின்வரும் நிரலானது இதை விளக்குகிறது.
import csv
info = [[SNO', 'Person', 'DOB'],
[1, 'Madhu', '18/12/2001),
[2', 'Sowmya”19/2/1998'],
[3', 'Sangeethay20/3/1999'),
[4', 'Eshwar', 21/4/2000'],
[5', 'Anand', '22/5/2001']]
Csv.register_dialect('myDialect,quoting=csv.QUOTE_ALL)
with open('c:\pyprg\ch13\person.csv', 'w') as f:
writer = csv.Writer(f, dialect='myDialect')
for row in info:
writer.writerow(row)
f.close()
"person.csv” கோப்பினை திறக்கும் போது பின்வரும் வெளியீட்டை
நாம் பெறலாம்:
“SNO”, “Person”, “DOB”
“1”, “Madhu”, “18/12/2001”
“2”, “Sowmya”, “19/2/1998”
“3”, “Sangeetha”, “20/3/1999”
“4”, “Eshwar”, “21/4/2000”
“5”, “Anand”, “22/5/2001”
மேற்கண்ட நிரலில் புதிய Dialect ஆனது mydialect என்ற பெயரில் அறிவிக்கப்பட்டுள்ளது. Quoting=csv.QUOTE_ALL என்ற dialect ஆனது அனைத்து மதிப்புகளையும் இரட்டை மேற்கோள் குறிகளுடன் எழுத அனுமதிக்கின்றது.
பிரிப்பான் என்பது சரம் ஆகும். இது புலங்களை பிரிக்க பயன்படுகிறது. இதன் கொடாநிலை மதிப்பு காற்புள்ளி(,) ஆகும். Csv.register_dialect() என்பதன் உதவியுடன் புதிய dialect()ஐ அறிவித்து பயனர் விரும்பும் பிரிப்பானை CSVகோப்பினில் பயன்படுத்த முடியும் பின்வரும் எடுத்துக்காட்டு நிரலானது pipe(l) பிரிப்பானை பயன்படுத்தி எழுதப்பட்டுள்ளது.
“dob.csv” கோப்பினை நாம் திறக்கும் போது, பின்வருமாறு வெளியீட்டை
பெறலாம்.
SNO|Person|DOB
1|Madhu|18/12/2001)
2|Sowmya|19/2/1998
3|Sangeetha|20/3/1999
4|Eshwar|21/4/2000
5|Anand|22/5/2001
மேற்கண்ட pipe(l) பிரிப்பானைக் கொண்டு புதிய dialect ஆனது அறிவிக்கப்பட்டுள்ளது.
அதன் பிறகு "info” list -யை CSV கோப்பினுள் எழுதப்பட்டுள்ளது.
குறிப்பு
dialect அளபுருவான skipinitialspace என்பதன் மதிப்பு True-ஆக இருக்கும் போது, பிரிப்பானை தொடர்ந்து வரும் வெற்று இடைவெளிகளை நீக்கும் இதன் கொடாநிலை மதிப்பு False ஆகும்.
வரி முறிப்பானானது வரியினை முடித்து வைக்கப் பயன்படுகிறது. இதன் கொடாநிலை மதிப்பு \r அல்லது \n ஆகும். CSV செயற்கூறில் உள்ள csv.register_dialect() என்ற இனக்குழுவை பயன்படுத்தி புதிய dialect ஐ அறிவிப்பதன் மூலம் வரி முறிப்பானை கொண்டு CSV கோப்பினை எழுத முடியும்.
line.csv கோப்பினை
திறக்கும் போது நாம் பின்வரும் வெளியீட்டை பெற முடியும்.
மேற்கண்ட நிரலில் புதிய dialect ஆன "myDialect uses
the delimiter='|' என்பது பிரிப்பானாக |(pipe) குறியீட்டாக கொண்டுள்ளது. இது புலங்களை
பிரிக்க பயன்படுகிறது. வரி முறிப்பானானது line terminator='\r\n\r\n' வரிசையை பிரிப்பதுடன்
ஒவ்வொரு இரண்டு வரிகளுக்கு அடுத்து தரவினை வெளிப்படுத்தும்.
குறிப்பு
பைத்தான் CSV செயற்கூறானது \r\n, \n அல்லது \r ஆகியவற்றை மட்டுமே வரி முறிப்பானாக ஏற்றுக் கொள்ளும்.
CSV செயற்கூறினில் உள்ள csv.register_dialect() என்ற இனக்குழுவை பயன்படுத்தி புதிய dialect-ஐ அறிவிப்பதன் மூலம் மேற்கோள் குறிகளை CSV கோப்பினில் பயன்படுத்த முடியும்.
"quote.csv” என்ற
கோப்பினை நாம் notepad உரைபதிப்பானில் திறக்கும் போது வெளியீடானது பின்வருமாறு தோன்றும்:
மேற்கண்ட நிரலில் myDialect ஆனது pipe(/) குறியீட்டை பிரிப்பானாகவும் quotechar ஆனது இரட்டை மேற்கோள் குறியையும் கோப்பினுள் எழுதும்.
CSV கூறினில் உள்ள DictWriter() இனக்குழுவை பயன்படுத்தி CSV
கோப்பினை Dictionary-ல் எழுதலாம்.
திறவுகோளானது புலப்பெயர் அளபுருக்களால் வழங்கப்படுகிறது. பின்வரும்
நிரலானது ஒரு கோப்பினுள் Dictionary -யை எழுதுவதற்கு பயன்படுகிறது.
import csv
data = [{MOUNTAIN' : 'Everest', 'HEIGHT': ‘8848'},
{MOUNTAIN' : 'Anamudi, HEIGHT': ‘2695'},
{MOUNTAIN' : 'Kanchenjunga, HEIGHT': ‘8586'}]
with open('c:\pyprg\ch13\peak.csv', 'w') as CF:
fields = [MOUNTAIN', HEIGHT')
w = csv.DictWriter(CF, fieldnames=fields)
w.writeheader()
w.writerows(data)
print(“writing completed”)
CF.close()
"peak.csv” என்ற
கோப்பினை notepad உரைப்பதிப்பானில் திறக்கும்
போது பின்வருமாறு வெளியீட்டை பெறலாம்.
"peak.csv” என்ற கோப்பினை NOTEPAD உரைப்பதிப்பானில் திறக்கும்
போது பின்வருமாறு வெளியீட்டை பெறலாம்.
மேற்கண்ட நிரலில் புலப்பெயரானது CSV கோப்பின் ஒவ்வொரு நெடுவரிசையின்
தலைப்பாக உள்ளது. DictWriter() பயன்படுத்தி அகராதியில் உள்ள தரவுகளை
"peak.csv” கோப்பினில் எழுதலாம்.
1. தனிப்பயன் Dialects உடன் CSV கோப்பாக Dictionary-ல் எழுதுதல்
import csv
Csv.register_dialect('myDialect, delimiter = '|'
quoting=csv.QUOTE_ALL)
with open('c:\pyprg\ch13\grade.csv', 'w') as csvfile:
fieldnames = ('Name', 'Grade']
writer = cv.DictWriter(csvfile, fieldnames=fieldnames,
dialect=”myDialect”)
writer.writeheader()
writer.writerows[[{Grade': 'B', 'Name': 'Anu'},
{Grade': 'A', 'Name': 'Beena'},
{Grade': 'C', 'Name': 'Tarun'}])
print("writing completed”)
grade.csv கோப்பினை திறக்கும் போது அது பின்வருமாறு வெளியீட்டை
கொண்டிருக்கும்.
மேற்கண்ட நிரலில் myDialect
என்ற தனிப்பயன் pipe(|) dialect ஆனது பிரிப்பானாக
pipe(|) குறியீட்டை கொண்டுள்ளது.
மேலும் புலப்பெயரானது csv கோப்பானது நெடுவரிசையின் பெயர்களாக பயன்படுத்தப்படுகிறது. இறுதியாக DictWriter() ஐ பயன்படுத்தி அகராதியில் உள்ள தரவுகளை "grade.csv” கோப்பினில் எழுதலாம்.
நிரலின் இயங்கு நேரத்தில் கூட நாம் தரவுகளை விசைப்பலகை வழியாக
பெற்று CSV கோப்பினில் எழுதலாம். எடுத்துக்காட்டாக "dynamicfile.csv" என்ற
கோப்பு பின்வரும் நிரலானது பயனரிடமிருந்து விசைப்பலகை , வழியாக தரவினை பெற்று கோப்பினில்
எழுதுகிறது, மேலும் அது கோப்பின் உள்ளடக்கத்தையும் வெளிப்படுத்தும்.
Import csv
With open(‘c;\pyprg\ch13\dynamicfile.csv’, ”w”)as
f:
W = csv.writer(f)
ans='y')
while (ans=='y'):
name = input(“Name?: ")
date = input(“Date of birth: “)
place = input(“Place: “) w
.writerow([name, date, place])
ans=input(“Do you want to enter more
y/n?:")
F=open('c:\pyprg\ch13\dynamicfile.csv'r')
reader = csv.reader(F)
for row in reader:
print(row)
F.close()
வெளியீடு
Name?: Nivethitha D
ate of birth: 12/12/2001
Place: Chennai
Do you want to enter more y/n?: y
Name?: Leena
Date of birth: 15/10/2001
Place: Nagercoil
Do you want to enter more y/n?: y
Name?: Padma
Date of birth: 18/08/2001
Place: Kumbakonam
Do you want to enter more y/n?:n
[‘Nivethitha 12/12/2001 Chennai’]
[]
[‘Leena’ 15/10/2001 Nagercoil’]
[]
[‘Padma 18/08/2001 Kumbakonam’]
[]