Python文件读写缓冲区和文件读写操作实例

1、python文件缓冲区

f = open('test', 'w', 1)    # 第三个参数为1表示行缓冲,默认值为-1
while True:
    data = input('>>>')
    if not data:
        break
    f.write(data)
    f.flush()       # 立即刷新缓冲,写入磁盘

f.close()       # 文件结束刷新缓冲区

2、python文件偏移量
定义:打开一个文件进行操作时系统会自动生成一个记录,记录中描述了我们对文件的一系列操作。其中包括每次操作到的文件位置。文件的读写操作都是从这个位置开始进行的。

"""
seek.py 文件偏移量演示
    seek(offset[,whence])   offset表示相对于某个位置移动的字节数。负数表示向前移动,正数表示向后移动
    whence是基准位置的默认值为 0,代表从文件开头算起,1代表从当前位置算起,2 代表从文件末尾算起。
    r w open 打开文件偏移量在开头
    a 打开文件偏移量在结尾
    通常以二进制方式打开操作文件偏移量
"""  
f = open('test', 'wb+')
f.write(b'Hello World')
f.flush()
# print('文件偏移量:{0}'.format(f.tell()))
print('文件偏移量:%s' % (f.tell()))
# 操作文件偏移量
f.seek(5, 0)
data = f.read()
print(data)
f.close()

3、文件读写操作
file_object = open(file_name, access_mode=‘r’, buffering=-1)
功能:打开一个文件,返回一个文件对象。
参数:file_name 文件名;
access_mode 打开文件的方式,如果不写默认为‘r’
文件模式 操作
r 以读方式打开 文件必须存在
w 以写方式打开
文件不存在则创建,存在清空原有内容
a 以追加模式打开
r+ 以读写模式打开 文件必须存在
w+ 以读写模式打开文件
不存在则创建,存在清空原有内容
a+ 以读写模式打开 追加模式
rb 以二进制读模式打开 同r
wb 以二进制写模式打开 同w
ab 以二进制追加模式打开 同a
rb+ 以二进制读写模式打开 同r+
wb+ 以二进制读写模式打开 同w+
ab+ 以二进制读写模式打开 同a+
buffering 1表示有行缓冲,默认则表示使用系统默认提供的缓冲机制。
返回值:成功返回文件操作对象。

  • 读文件操作函数

    read([size])
    功能: 来直接读取文件中字符
    size:读取字节数
    返回值: 返回读取到的内容

    readline([size])
    功能: 用来读取文件中一行
    size:默认-1,读取一行,给定数值表示读取字节数
    返回值: 返回读取到的内容

    readlines([sizeint])
    功能: 读取文件中的每一行作为列表中的一项
    size:默认-1,读取所有,给定数值表示读取字节数
    返回值: 返回读取到的内容列表

  • 写操作函数

    write(string)
    功能: 把文本数据或二进制数据块的字符串写入到文件中去
    参数:要写入的内容
    返回值:写入的字符个数

    writelines(str_list)
    功能:接受一个字符串列表作为参数,将它们写入文件。
    参数: 要写入的内容列表

  • 关闭文件操作
    file_object.close()

  • 常见文件操作函数
    1、获取文件大小 os.path.getsize(file)
    2、查看文件列表 os.listdir(dir)
    3、查看文件是否存在 os.path.exists(file)
    4、判断文件类型 os.path.isfile(file)
    5、删除文件 os.remove(file)

4、文件操作练习

"""
输入要复制的文件路径,将文件复制到另外一个文件目录下
"""
filename = input('File:')       # 输入文件名
try:
    fr = open(filename, 'rb')       # 二进制打开文件
except FileExistsError as e:
    print(e)
else:
    fw = open('/home/xiaohuo/PycharmProjects' + filename.split('/')[-1], 'wb')      # 打开文件
    while True:
        data = fr.read(1024)        # 读取文件
        if not data:
            break
        else:
            fw.write(data)
        fr.close()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章