前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python3_05.文件操作那些事

python3_05.文件操作那些事

作者头像
py3study
发布2020-01-06 11:11:52
3710
发布2020-01-06 11:11:52
举报
文章被收录于专栏:python3python3

文件操作的学习笔记。

>>> file = open('/tmp/test.txt','r')

>>> file.read()

'root:x:0:0:root:/root:/bin/bash\nbin:x:1:1:bin:/bin:/sbin/nologin\ndaemon:x:2:2:daemon:/sbin:/sbin/nologin\nadm:x:3:4:adm:/var/adm:/sbin/nologin\nlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\nsync:x:5:0:sync:/sbin:/bin/sync\nmysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash\n'

>>> file.close()  #文件使用完以后要关闭文件,因为文件会占用资源

>>> with open('/tmp/test.txt','r') as f:

...     print(f.read())

...    #with语句自动调用了close方法

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash


read() 一次性读取所有内容,文件过大,内存容易出问题

read(size) size指定每次最多读取的字节数,更安全

readline()  每次读取一行

如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便:

#f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore', newline='')

open可以传入一些参数:

encoding:指定编码

errors:处理错误的方式,最简单的是ignore忽略,但是这样用多了不太好。

newline='':Python可以识别所有的普通换行符并将其转换为单个 \n 字符。 类似的,在输出时会将换行符 \n 转换为系统默认的换行符。 如果你不希望这种默认的处理方式,可以给 open() 函数传入参数 newline='' 


>>> with open('/tmp/hello.txt','w') as f:

...     f.write('hello')              #文件写入

...     print('你好',file=f)   #print输入重定向到文件中

...

>>> file.read()

'hello你好\n'


#-- 文件基本操作

   output = open(r'C:\spam', 'w')          # 打开输出文件,用于写

   input = open('data', 'r')               # 打开输入文件,用于读。打开的方式可以为'w', 'r', 'a', 'wb', 'rb', 'ab'等

   fp.read([size])                         # size为读取的长度,以byte为单位

   fp.readline([size])                     # 读一行,如果定义了size,有可能返回的只是一行的一部分

   fp.readlines([size])                    # 把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长。

   fp.readable()                           # 是否可读

   fp.write(str)                           # 把str写到文件中,write()并不会在str后加上一个换行符

   fp.writelines(seq)                      # 把seq的内容全部写到文件中(多行一次性写入)

   fp.writeable()                          # 是否可写

   fp.close()                              # 关闭文件。

   fp.flush()                              # 把缓冲区的内容写入硬盘

   fp.fileno()                             # 返回一个长整型的”文件标签“

   fp.isatty()                             # 文件是否是一个终端设备文件(unix系统中的)

   fp.tell()                               # 返回文件操作标记的当前位置,以文件的开头为原点

   fp.next()                               # 返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。

   fp.seek(offset[,whence])                # 将文件打操作标记移到offset的位置。whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。

   fp.seekable()                           # 是否可以seek

   fp.truncate([size])                     # 把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。

   for line in open('data'):

       print(line)                       # 使用for语句,比较适用于打开比较大的文件

   open('f.txt', encoding = 'latin-1')     # Python3.x Unicode文本文件

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档