ไฟล์ Sample_File.txt ประกอบไปด้วยข้อมูล 5 แถว โดยแต่ละแถวจะมีชื่่อ ประเทศ และจำนวนเงิน ซึ่งคั่นด้วยช่องว่าง (Space)
เราจะเขียนโปรแกรมอ่านไฟล์นี้มา แล้วประมวลผลไฟล์นี้ให้คนที่อยู่ประเทศในแถบเอเชียมีจำนวนเงินเพิ่มขึ้น 1.5 เท่า แล้วเขียนผลลัพธ์ที่ได้ใส่ในไฟล์ใหม่ที่ชื่อว่า Sample_Result.txt
ก่อนอื่น เราลองมาทำความเข้าใจกับคำสั่งที่เกี่ยวข้องกันก่อน
โดยอย่างแรก เราจะต้องอ่านไฟล์นี้ขึ้นมา ด้วยคำสั่งต่อไปนี้ (สมมติว่าไฟล์ Sample_File.txt เก็บอยู่ใน D:\)
เป็นอันจบตัวอย่างการอ่านและเขียนไฟล์โดยใช้ Python แล้วครับ
ก่อนอื่น เราลองมาทำความเข้าใจกับคำสั่งที่เกี่ยวข้องกันก่อน
โดยอย่างแรก เราจะต้องอ่านไฟล์นี้ขึ้นมา ด้วยคำสั่งต่อไปนี้ (สมมติว่าไฟล์ Sample_File.txt เก็บอยู่ใน D:\)
>>> f = open('D:\Sample_File.txt','r')จากนั้นก็ทำการอ่านข้อมูลทุกบรรทัดด้วยคำสั่งต่อไปนี้
>>> lines = f.readlines()โดยสามารถเรียกดูข้อมูลที่อ่านมาได้ ให้ผลลัพธ์เป็นดังนี้
>>> lines ['Smith USA 350\n', 'John USA 250\n', 'Somchai THA 400\n', 'Kashutomo JAP 150\n', 'Ashiba JAP 500']หากใช้คำสั่ง f.readline() แทน f.readlines() จะเป็นการอ่านข้อมุลทีละบรรทัดเท่านั้น และเมื่อใช้คำสั่งนี้ซ้ำก็จะอ่านข้อมูลในบรรทัดถัดไปแทน เช่น
>>> f = open('D:\Sample_File.txt','r') >>> line = f.readline() >>> line 'Smith USA 350\n' >>> line = f.readline() >>> line 'John USA 250\n'สังเกตว่าเมื่ออ่านข้อมูลในแต่ละบรรทัด จะมี character '\n' ซึ่งหมายถึงการขึ้นบรรทัดใหม่ (end of line) ติดมาด้วยเสมอ หากเราต้องการแสดงผลข้อมูลในแต่ละบรรทัดด้วยคำสั่งต่อไปนี้ จะได้ผลลัพธ์เป็น
>>> for line in lines: print line Smith USA 350 John USA 250 Somchai THA 400 Kashutomo JAP 150 Ashiba JAP 500ซึ่งโปรแกรมจะตีความ '\n' เป็นการขึ้นบรรทัดใหม่ ทำให้ output แสดงออกมาเหมือนขึ้นบรรทัดใหม่ 2 รอบ หากต้องการไม่ให้มีบรรทัดว่างเกิดขึ้น จะต้องใช้คำสั่งต่อไปนี้
>>> for line in lines: print line.strip() Smith USA 350 John USA 250 Somchai THA 400 Kashutomo JAP 150 Ashiba JAP 500คราวนี้เมื่อเรารู้หลักการอ่านไฟล์ง่ายๆแล้ว เราลองมาทำตามโจทย์ตัวอย่างกัน
f = open('D:\Sample_File.txt','r') lines = f.readlines() ans = [] for line in lines: lis = line.strip().split(' ') if lis[1] == 'THA' or lis[1] == 'JAP': temp = lis[0] + ' ' + lis[1] + ' ' + str(int(lis[2])*1.5) + '\n' ans.append(temp) else: ans.append(line) f = open('D:\Sample_Result.txt','w') for item in ans: f.write(item) f.close()จะได้ผลลัพธ์เป็นไฟล์ Sample_Result.txt แบบนี้
เป็นอันจบตัวอย่างการอ่านและเขียนไฟล์โดยใช้ Python แล้วครับ
No comments:
Post a Comment