python中的文件操作

一、python下的文件操作基础知识

**1.读写文件的步骤:
(1)打开文件,或者新建一个文件 --> 读/写数据 -->关闭文件
(2)打开文件,或者新建一个文件:(open,默认模式是r,也可以认为是mode=‘r’)

在python中,使用open函数,可以打开一个已经存在的文件,或者新建一个新文件。
open(文件名  访问模式)
其中open 后面跟的文件名/文件路径一般都是字符串。
open的作用类似于vim命令(文件存在——打开;文件不存在——新建)。

2.文件的常见打开方式:

方式意义
r只读的方式打开
w只写的方式打开(如果文件不存在,则会创建改文件;文件存在,则会清空该文件的内容)
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头,这是默认模式。例如:图片或视频
a用于文件内追加内容,如果文件已存在,文件指针将会放在文件的末尾,也就是说,新的内容将会被写入到已有内容之后,如果该文件不存在,则新建文件进行写入
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

3. File对象的属性
一个文件被打开后,会得到一个file对象,你可以得到有关该文件的各种信息。

属性描述
file.closed返回true如果文件已被关闭,否则返回false。
file.mode返回被打开文件的访问模式。
file.name返回文件的名称。
file.softspace如果用print输出后,必须跟一个空格符,则返回false。否则返回true。

举例:
在这里插入图片描述

二、文件对象的读、写和定位

读:
格式: f.read()
写:
格式:f.write()
定位:
1.显示指针当前所在位置
格式:f.tell()
2. 修改指针的位置
格式:f.seek(offset, from)
offset: 指的偏移量,一般为0
from: 0:代表是移动指针到文章开头;1:代表当前位置; 2: 代表移动指针到文章末尾
举例:
在这里插入图片描述

三、对于文件的关闭和拷贝

1.关闭
方法一:调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的:
方法二:Python引入了with语句来自动帮我们调用close()方法:
举例:
在这里插入图片描述
2.拷贝
在这里插入图片描述

四、os模块

os模块 作用

os.name	        查看当前的操作系统 (Windows: nt, Linux:posix)
os.uname	    查看当前操作系统的详细信息,如果在windows中运行,则需要import platform
os.mkdir()	    创建目录
os.makedir()	可以创建多层目录,等价于(mkdir -p )
os .rmdir()	    删除目录
os.mknod()		创建文件(windows中不支持)
os.rename()		对文件重命名
os.remove()		删除文件

os.path.exists()	判断文件是否存在,返回True是存在,False表示不存在
os.path.splitext()	分离文件名和后缀名
os.path.split()		分离目录名和文件名()
os.path.getsize()	查看文件的大小
os.path.abspath()	显示改文件的绝对路径

举例:
1.打印当前系统信息
在这里插入图片描述
2. os模块
在这里插入图片描述

五、json 模块
  1. JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

2.Python数据类型和Json数据类型互相转换规则
在这里插入图片描述
注:Python 中的集合不能转成Json数据类型
3.Python和Json互相转换需要的指令
3.1Python转换成Json
json.dumps() 只是将python格式转换成了json格式
json.dump() 将转换后的格式写入到了文件中
两种方法中都包含的参数:
ensure_ascii=False: 中文存储需要设定
indent=4: 增加缩进,增强可读性,但缩进空格会使数据变大
在这里插入图片描述

在这里插入图片描述
3.2json 格式转换成python
python转json格式使用dumps参数,或者使用dump格式直接将python格式转换成json格式并且存储到一个文件
json格式转pthon使用load或loads参数
在这里插入图片描述
练习
学生管理系统(文件版)
1:必须使用自定义函数完成对程序的模块化
2:学生信息至少包含:姓名,年龄,学号,除此之外可以适当添加
3:必须完成的功能:添加,删除,修改,查询,退出

代码:

import json
import os
import pprint


def rewrite(x, filename='学生信息文件'):
    with open(filename, mode='w') as file:
        json.dump(x, file, indent=4, ensure_ascii=False)


while True:
    act = input('请输入你想完成的操作(添加|删除|更改|查看|退出):')
    if os.path.exists('学生信息文件'):
        if os.path.getsize('学生信息文件') != 0:
            with open('学生信息文件', mode='r') as f:
                d = json.load(f)
        else:
            d = {}
    else:
        d = {}
    if act == '添加':
        number = input('学号:')
        if number not in d.keys():
            name = input('学生姓名:')
            age = int(input('年龄:'))
            d.update({number: {'姓名': name, '年龄': age}})
            rewrite(d)
            print('学号为%s的学生信息添加成功' % number)
        else:
            print('学号为%s的学生信息在文件中已经存在' % number)
    elif act == '删除':
        number = input('输入你想要删除的学生学号:')
        if number in d.keys():
            d.pop(number)
            rewrite(d)
            print('学号为%s的学生信息已经被删除' % number)
        else:
            print('学号为%s的学生信息不存在' % number)
    elif act == '更改':
        number = input('请输入你要修改的学生学号:')
        if number in d.keys():
            kind = input('请输入你要修改学号为%s的什么信息(姓名|年龄):' % number)
            content = input('修改%s为:' % kind)
            d[number].update({kind: content})
            rewrite(d)
            print('学号为%s的学生信息已经被更改' % number)
        else:
            print('学号为%s的学生信息不存在' % number)
    elif act == '查看':
        pprint.pprint(d)
    elif act == '退出':
        break
    else:
        print('请输入正确的操作')

测试
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值