Python基础之 一 文件操做

文件操做linux

流程:
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()) 这里转换为二进制格式写入文件便可ide

U表示在读取时,能够将\r \n \r\n 自动转换为\n
写法:rU 或者 r+U性能

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

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

方法:
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模式打开文件。code

注意:文件以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,timefor i in range(10):    sys.stdout.write('#') 动态输出到屏幕,不会换行    sys.stdout.flush() 刷新屏幕,显示动态输出    time(0.1) 为查看方便

相关文章
相关标签/搜索