文件操作及CSV文件的读写

在读取文件之前,你需要先打开它。在Python里打开一个文件很简单:
f = open("file", encoding="utf-8")

  • 从文件中读取数据有三种方式:read(),readline(),readlines()

假设 file 的内容为:

hello
welcome
see you!

1.read([size])方法 ,read([size])方法从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它范围为字符串对象。
2.readline()方法,该方法每次读出一行内容,所以,读取时占用内存小,比较适合大文件,该方法返回一个字符串对象。
3.readlines()方法,readlines()方法读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存。

>>>f = open("file", "r", encoding="utf-8")
>>>f.read()
'hello\nwelcome\nsee you!\n'
>>>f = open("file", "r", encoding="utf-8")   #文件读完需再次打开才能再次读取内容
>>>f.readline()
'hello\n'
>>>f.readlines()
['welcome\n', 'see you!\n']     #将剩下的读出并存进一个列表中
f.close()   #关闭文件

4.当我们需要从文件中取出特定行的时候还可以用linecache模块

>>>import linecache
>>>linecache.getline('file', 2)
'welcome\n'

常用with方式打开文件,这种打开方式在对文件读写完毕后会自动关闭文件,避免忘记关闭文件造成的内存损失。

>>>with open("file", "r", encoding="utf-8") as f:
            for line in f:                         #配合for循环一行一行读出内容
                print(line)            
hello
welcome
see you!

seek()方法可一直接定位到文章特定位置开始读取内容,tell()方法返回当前位置。

>>>f = open('file','r',encoding='utf-8')
>>>f.seek(5)
5
>>>f.read(6)
'\nwelco'
>>>f.tell()
11
  • 写入文件有两种模式:

    “写”模式会重写文件。传递`mode='w'`参数给open()函数。
    “追加”模式会在文件末尾添加数据。传递`mode='a'`参数给open()函    数。 
    

如果文件不存在,两种模式下都会自动创建新文件,所以就不需要“如果文件还不存在,创建一个新的空白文件以能够打开它”这种琐碎的过程了。所以,只需要打开一个文件,然后开始写入即可。

>>>with open('file', mode='a', encoding='utf-8') as f:
             f.write("hello world!")
>>>f = open('file')
>>>f.read()
'hello\nwelcome\nsee you!\nhello world!
>>>f.close()
  • 标准库中有自带的 csv (逗号分隔值) 模块处理 csv 格式的文件

1.CSV文件的写入

>>>import csv
>>> a=[("name","sex","age"),("john",'boy',25),('tina','girl',23),("sara","girl",23)]
>>> f=open("csvf", mode="w",encoding="utf-8",newline="")
>>>wf=csv.writer(f)
>>>wf.writerows(a)
>>>f.close()

在打开格式中加入参数newline=""以便使得写入时行与行之间不空行
2.CSV文件的读取

>>>import csv
>>>f = open('csvf', encoding='utf-8')
>>>rf = csv.reader('f')
>>>list(rf)
[['name', 'sex', 'age'],
 ['john', 'boy', '25'],
 ['tina', 'girl', '23'],
 ['sara', 'girl', '23']]
>>>for row in rf:                      #可用for循环依次读出各行
            print(row)   
['name', 'sex', 'age']
['john', 'boy', '25']
['tina', 'girl', '23']
['sara', 'girl', '23']
>>>f.close()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容

  • 1.能调用方法的一定是对象,比如数值、字符串、列表、元组、字典,甚至文件也是对象,Python中一切皆为对象。 s...
    ph_郭先森阅读 952评论 0 0
  • From: http://www.cnblogs.com/zhoujie/archive/2013/04/10/p...
    pzka158阅读 1,778评论 0 1
  • 学习处理文件和保存数据可以使程序使用起来更容易,用户将能够选择输入什么样的数据, 以及在什么时候输入; 用户使用你...
    路_尧知百战胜阅读 644评论 0 0
  • ----我们村的那些人那些事 作者:温馨万家 在医院见到五妞了,按街坊辈我该...
    魏喜梅wxm阅读 1,127评论 6 6
  • 这种东西也没法说啊!有种奋斗叫做没人理解,有种心疼叫做心疼别人,我现在算是个废人吧!我至少目前无法转化为很有价值的...
    心疼别人的非常心疼阅读 363评论 0 0