博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python基础之 一 文件操作
阅读量:5053 次
发布时间:2019-06-12

本文共 2170 字,大约阅读时间需要 7 分钟。

文件操作

流程:

1:打开文件,得到文件句柄并赋值给一个变量
2:通过句柄对文件进行操作
3:关闭文件
模式解释
r(读) , w(写) ,a(附加)r+(读写的读), w+(读写的写),a+(读附加的附加)

b表示以二进制模式打开文件(3.0里网络传输只能用此模式,或者视频音频等)

以上模式以二进制模式表示为:rb,wb,ab,rb+,wb+,ab+
如何将文本以二进制写入文件
f = open('file','wb')
f.write('hello world',encode()) 这里转换为二进制格式写入文件即可

U表示在读取时,可以将\r \n \r\n 自动转换为\n

写法:rU 或者 r+U

缓冲:

0:禁用缓冲
负数:使用系统默认缓冲
1:只缓冲1行数据
2+:指定缓冲空间大小

打开文件举例: f1=open('/tmp/passwd','r')

方法:

read(): 将文件内容以字符串形式全部读取。
readable():判断文件是否可读。
write():写文件
writeable():判断文件是否可写
flush():刷新手工将内存中的文件内容写到硬盘上

readline()用法:读取一行。

举例读取前5行:
for i in range(5):
file.readline()
readlines():将文件内容以列表形式打印(这个方法效率低对大文件)
举例打印文件前10行:
for index,line in enumerate(f.readlines()):
    if index == 9:
        break
    print(line.strip())
这种方法性能不好,不要用在大文件处理,因为会一次性读取所有文件内容。

tell(): 显示当前指针在文件中位置(字节显示)

seek(offset[whence]) 指针偏移
whence:偏移量起点
0:从文件头 (默认位置)
1:从当前位置
2:从文件尾部 例如:f1.seek(0,2)
offset:偏移数量
seekable():判断文件中的光标是否可以移动,可以返回True,否则返回False.(linux中一切皆文件,终端设备在系统里也是文件,但是光标是不可以移动的。)
encoding:打印文件的编码
errors:异常处理
fileno():返回文件句柄在内存中的编号(这个编号属于操作系统内部IO),一般不使用这个方法(忘掉它吧)。
name:调用当前文件名称
isatty():看终端设备(打印机,屏幕等终端),用于底层交互。
close(): 关闭文件
closed:判断文件是否关闭,返回(True/False)
truncate():截断,如果不带参数会清空文件。带参数如:truncate(20):表示从文件开头往后截取20个字符。需要以a模式打开文件。

注意:文件以r+模式打开文件,读取文件是按照正常方式从头开始读取,但中途写入还是会直接写到文件末尾。

打开读取文件效率最高的写法:

count = 0
for line in f:
    if count == 9:
        print('----分隔符-----')

        print(line.strip())

        continue
    print(line.strip())
    count += 1
这种方法是内存只保存一行,读取的一行覆盖上一行原理。

文件修改方法:

只有同时打开2个文件,第一个是需要读取的源文件,第二个是写入内容的新文件,过程是读取源文件每行数据,如果符合修改需求,则修改,然后将每行数据写入新文件中。

1 src_file = open('源文件名',encoding='utf-8') 2 dst_file = open('文件名.bak','w',encoding='utf-8') 3  4 for line in src_file: 5     if '准备修改的字符串' in line.strip(): 6         #注意:这里修改一行后一定要重新指定到一个变量 7         line = line.replace(准备修改的字符串,替换的字符串)  8         print(line.strip()) 9     dst_file.write(line)10 src_file.close()11 dst_file.close()
View Code

 

with : 可以自动在with执行完后自动关闭打开的文件

with open('file1','r',encoding='utf-8') as f1 ,\

       open('file2','r',encoding='utf-8') as f2:    #使用with可以同时打开多个文件功能,写法建议参考这里。

    ....

小技巧动态输出显示进度条

import sys,time
for i in range(10):
    sys.stdout.write('#') 动态输出到屏幕,不会换行
    sys.stdout.flush() 刷新屏幕,显示动态输出
    time(0.1) 为查看方便

转载于:https://www.cnblogs.com/zy6103/p/6769752.html

你可能感兴趣的文章
对于C#中的一些点滴你真的理解了吗?
查看>>
结对编程项目--电梯调度
查看>>
ACM International Collegiate Programming Contest World Finals 2013
查看>>
【PAT-一道看着很难的水题】L2-023. 图着色问题
查看>>
[游戏学习26] MFC 时间函数 画图形
查看>>
Java构建器(多个构造器参数)
查看>>
个人绩效与团队绩效
查看>>
快餐英语名称
查看>>
Ubuntu PPA软件源
查看>>
Window 2003 IIS + MySQL + PHP + Zend 环境配置
查看>>
Mysql集合笔记
查看>>
《tr命令》-linux命令五分钟系列之六
查看>>
HTTPS与SSL数字证书的必要性
查看>>
react之项目目录
查看>>
wamp自定义网站根目录及多站点配置
查看>>
一级和二级的列表在一起的时候。获取一级放在轮播里面展示。10个一组轮播...
查看>>
GPT转MBR完整图文教程
查看>>
转载:《TypeScript 中文入门教程》 6、命名空间
查看>>
友情链接
查看>>
JavaScript测试工具
查看>>