跳过正文

Python100天 文件操作

·959 字
目录
Python100天 - 这篇文章属于一个选集。
§ : 本文

文件操作模式
#

操作模式具体含义
r只读(默认)
w写入,会清空之前的内容,文件不存在则创建新文件
x写入,如果文件已存在则会产生异常
a追加,将内容追加到文件末尾,文件不存在则创建新文件
b二进制模式
t文本模式(默认)
+更新,既可以读又可以写

打开文件
#

def open_file(filename):
    fp = None
    try:
        fp = open(filename, 'r', encoding='utf-8')
        print(fp.read())

    # except FileNotFoundError:
        # print('无法打开执行文件,', filename)
    except LookupError:
        print('指定了未知的编码,', filename)
    except UnicodeDecodeError:
        print('读取文件时解码失败')
    except Exception as e:
        print(e)
    finally:
        if fp:
            fp.close()

# 推荐使用with open形式打开文件
def with_open_file(filename):
    try:
        # with open 形式不需要关心文件句柄的关闭
        with open(filename, 'r', encoding='utf-8') as fp:
            # 一次读取全部内容
            # print(fp.read())

            # 按行读取
            # for line in fp:
            #     print(line.strip('\n'))

            # 将所有内容按行读取到列表中
            lines = fp.readlines()
            print(lines)
    except FileNotFoundError:
        print('无法打开执行文件,', filename)
    except LookupError:
        print('指定了未知的编码,', filename)
    except UnicodeDecodeError:
        print('读取文件时解码失败')
    except Exception as e:
        print(e)

if __name__ == '__main__':
    # open_file('./tests.txt')
    with_open_file('./test.txt')

文件写入操作
#

def write_file(filename):
    try:
        # with open 形式不需要关心文件句柄的关闭
        with open(filename, 'a', encoding='utf-8') as fp:
            fp.write('test'+'\n')
    except IOError:
        print("写入文件失败")
    except Exception as e:
        print(e)


if __name__ == '__main__':
    write_file('./test.txt')

读写 JSON 文件
#

JSON 与 Python 类型对应关系

JSONPython
objectdict
arraylist
stringstr
number(int/real)int/float
true/falseTrue/False
nullNone

Python 与 JSON 类型对应关系

PythonJSON
dictobject
list,tuplearray
strstring
int, float, int- & float-derived Enumsnumber
True/Falsetrue/false
Nonenull

json模块主要函数

  • dump(),将Python对象按照JSON格式序列化到文件中
  • dumps(),将Python对象处理成JSON格式字符串
  • load(),将JSON文件中的数据反序列化成Python对象
  • loads(),将字符串数据反序列化成Python对象
import json

def write_json_file(data, filename):
    try:
        # with open 形式不需要关心文件句柄的关闭
        with open(filename, 'a', encoding='utf-8') as fp:
            json.dump(data, fp)
    except IOError:
        print("写入文件失败")
    except Exception as e:
        print(e)


if __name__ == '__main__':
    data = {'a':1,'b':2}
    write_json_file(data, './test.json')

读写CSV文件
#

判断文件是否存在
#

  • os.path.exists(),既可以判断文件,也可以判断目录是否存在
  • os.path.isfile()
  • os.access(path, mode)
    • os.F_OK: 检查文件是否存在
    • os.R_OK: 检查文件是否可读
    • os.W_OK: 检查文件是否可以写入
    • os.X_OK: 检查文件是否可以执行
import os

filename = './test.txt'

if os.path.exists(filename):
    print('文件存在')

if os.path.isfile(filename):
    print('文件存在')

if os.access(filename, os.W_OK):
    print('文件可写')

创建、删除文件、目录
#

  • os.remove(file) 删除文件
  • os.mkdir(dir, mode) 创建目录,mode默认0777
  • os.mkdirs(dirs, mode) 递归创建目录
Python100天 - 这篇文章属于一个选集。
§ : 本文