zoukankan      html  css  js  c++  java
  • Python之文件操作

    open函数

    1、打开文件的方式

    打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。

    打开文件的模式有:

    r , 只读模式【默认】

    w, 只写模式【不可读;不存在则创建;存在则清空内容;】

    x, 只写模式【不可读;不存在则创建,存在则报错】

    a, 追加模式【可读;   不存在则创建;存在则只追加内容;】

    "+" 表示可以同时读写某个文件

    r+, 读写【可读,可写】

    w+,写读【可读,可写】

    x+ ,写读【可读,可写】

    a+, 写读【可读,可写】

     "b"表示以字节的方式操作

    rb  或 r+b

    wb 或 w+b

    xb 或 w+b

    ab 或 a+b

     注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型

    2.操作

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 
     4 
     5 # 1. r读模式  默认
     6 # open是去找当前操作系统的编码  f句柄
     7 f = open('xxx', 'r', encoding='utf8')
     8 # data = f.read()
     9 # data = f.readable()  # 可读
    10 # print('第一行', f.readline(), end='')
    11 # print('第二行', f.readline())
    12 # print('第三行', f.readline())  # 如果超过读出文件行数也不会报错,游标也跟着行数走,文件最后有回车换行
    13 data = f.readlines()
    14 print(data)
    15 # 一定要关闭,不然一直占用操作系统的资源
    16 f.close()
    17 
    18 # 2. w写模式
    19 f = open('xxx1', 'w', encoding='utf8')
    20 f.writable()
    21 f.write('111
    ')
    22 f.write('222
    333
    444
    ')
    23 f.writelines(['555
    ', '666
    '])   # 文件操作只能读字符串 也只能写字符串
    24 f.close()
    25 
    26 # 3. a追加模式
    27 f = open('xxx', 'a', encoding='utf8')
    28 f.write('
    写到文件最后')
    29 
    30 # 4. x只写模式 存在会报错
    31 
    32 # 5. 模拟文件修改
    33 f = open('xxx', 'r', encoding='utf8')
    34 data = f.readlines()
    35 print(data)
    36 f.close()
    37 
    38 dist_f = open('xxx', 'w', encoding='utf8')
    39 dist_f.write(data[0]) # 这是删除,修改的话可以匹配字符串然后str里边的替代方式就可以修改了
    40 dist_f.close()
    41 
    42 # 6.with操作
    43 # with open('a.txt', 'w') as f:
    44 #     f.write('1111
    2222
    ')
    45 # 从一个文件读出数据再写到另外一个文件中
    46 with open('a.txt', 'r', encoding='utf8') as src_f, 
    47         open('xxx', 'w', encoding='utf8') as dist_f:
    48     data = src_f.read()
    49     dist_f.write(data)
    50 
    51 
    52 # 7.b字节模式
    53 # f = open('xxx', 'rb')  # 这里不能指定编码的格式  因为已经定了字节的模式了
    54 # data = f.read()
    55 # print(data.decode('utf8'))
    56 # print(bytes('你好', encoding='utf8'))
    57 # print(bytes(b'hello')) 如果是英文直接可以用b  如果中文就必须编码 这是在写以二进制的时候
    58 # 磁盘存储的字节二进制的形式   字符串---encoding--->bytes类型
    59 #                             bytes---decode--->字符串
    60 # f = open('xxx', 'wb')
    61 # f.write('中国'.encode('utf8'))
    62 
    63 # f = open('xxx', 'ab')
    64 # f.write('中国
    '.encode('utf8'))
    65 
    66 # f = open('xxx', 'ab')
    67 # f.write('中国
    '.encode('utf8'))
    68 
    69 f = open('xxx', 'r', encoding='utf8', newline='')
    70 data = f.read()
    71 print(data.encode('utf8'))
    72 # b'xe4xb8xadxe5x9bxbd
    xe4xb8xadxe5x9bxbd
    
    ' python默认windows
    换行newline 
    换行
    73 # f.tell()  # 当前光标位置
    74 # f.seek()  # 光标位置方式  0 1 2三种方式  0代表从文件第一个字节 (1,2必须是b模式下)1代表正向 2代表倒序
    75 # f.flush() # 刷新 这样就可以从内存的字节 保存到磁盘中
    76 # f.truncate() # 截断 这是写的模式
    77 # f.isatty()   # 判断文件是否是同意tty设备
    78 # f.next()     # 获取下一行数据,不存在,则报错
    79 # 文件内光标移动:文件打开方式b模式代表读取3个字节  其余文件内光标移动都是以字节为单位如seek tell truncate
    open,with
  • 相关阅读:
    Java学习62
    Java学习61
    Maven3种打包方式之一maven-assembly-plugin的使用
    sftp 上传下载 命令介绍
    JMock+Junit4结合完成TDD实例
    UML类图中类与类的四种关系图解
    接口之间的多继承
    Linux中在当前目录下查找某个文件
    .gitignore与exclude
    pro git
  • 原文地址:https://www.cnblogs.com/Alexephor/p/11193948.html
Copyright © 2011-2022 走看看