文件的基本操作
内置函数-open
调用函数的时候要根据函数的定义来传参否走会报错
调用open()函数时不传参数会报错
TypeError: open() missing required argument 'file' (pos 1)
# open()函数缺少缺少必需的参数
open()函数的返回值:
是一个文件对象,可以调用对象里的函数
f = open('test.txt')
print(f)
运行结果:
<_io.TextIOWrapper name='test.txt' mode='r' encoding='cp936'>
打开文件操作完成后一定要关闭
close()
with
sa:取一个简单的名字
执行完with冒号后面的代码就把文件关闭了
with open('write.txt', encoding='utf-8', mode='w') as f:
f.write('明天星期三')
读取文件
读取文件-read()
报错下面的错误代表编码格式的问题
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 4: illegal multibyte sequence
读取文件代码:
f = open('test.txt', encoding='utf8') # 如果文件内有英文之外的文字需要加utf8
content = f.read()
print(content)
运行结果:
按客户博为峰
埃德加
读取一行-readline
问题:如果前面读取过文件全部内容的话,光标会移动到文件末尾此时使用readline()读取不到内容
解决:将光标移动到最开始。方法1:关闭文件重新打开;方法2:将光标移动seek()
# 方法1:之前打开过文件后关闭文件在读取---使用最多
f.close()
f = open('test.txt', encoding='utf8')
line = f.readline()
print('第一行数据', line)
# 方法2 ;移动光标
f.seek(0) # 0为起始
line = f.readline()
print('第一行数据', line)
读取所有的行保存到列表里面—readlines
f.close()
f = open('test.txt', encoding='utf8')
lines = f.readlines()
print('读取所有的数据', lines)
运行结果:
读取所有的数据 ['按客户博为峰\n', '埃德加']
写入文件
mode=‘w’
写入文件的时候需要在open()函数内添加mode='w’这个参数
w:每次打开文件写入新内容都会覆盖之前的内容
f = open('write.txt', encoding='utf-8', mode='w') # mode='w' 在没有该文件时先创建文件在写入,有该文件时直接写入
# mode 参数表示的是打开文件的模式
# w代表写入,r代表只读,
f.write('张三,历史,真不错')
f.close()
mode=‘a’
a:追加,写入新内容的时候会在之前的内容后面添加
f = open('write.txt', encoding='utf-8', mode='w')
f.write('张三,历史,真不错\n') # \n代表换行
f.close()
f = open('write.txt', encoding='utf-8', mode='a')
f.write('明天星期三')
f.close()
运行该代码后write.txt文件内容
张三,历史,真不错
明天星期三
读取图片
f = open('图标.JPG', mode='rb')
content = f.read()
print(content)
运行代码得到的是一堆字符
模块和包的使用
定义
模块(Module):模块是一个python文件,以.py结尾,包含了python对象定义和python语句。通常放到包里
包(package):python中的包就是一个包含__init__.py文件的目录(文件夹),如果没有这个文件就会出现模块无法找到。
模块的作用
存放相关功能的代码,使代码更好用更易懂
模块能够定义函数、类、变量,也可以包含可执行的代码
模块导入
方法1:
func01()函数定义
def func01():
print('正在调用func01()')
from pkg.module01 import func01
# from 包.模块 import 函数,变量名
# from 包.模块 import 函数名 as 别名 和现有的函数名冲突时使用
# func01() 位置在pkg包的module01文件内
func01()
导入系统路径:
通常包括项目目录、python安装环境、虚拟环境
系统路径里面有的都可以导入
import sys
pprint.pprint(sys.path)
其他方法
import * # 1.表示导入sys.path下的索引模块
from pkg import * # 2.尽量避免使用
import # 通常是导入内置的模块或第三方模块块
# 第三方模块:比尔写好的python包模块,先安装requests才能导入
# requests安装1:在Terminal下安装requests----使用命令:pip install requests安装,卸载:pip uninstall requests
# 安装2 在pycharm setting------ file->settings-->project---》python interpreter,点击加号输入requests,点击install即可
路径处理
import os
# .表示当前目录的层级
# 获取绝对路径
print(os.path.abspath('.'))
cwd = os.path.abspath('.')
# 获取路径目录名称
print(os.path.dirname(cwd))
# 路径拼接
new_file = os.path.join(cwd, 'new.txt')
print(new_file)
# 路径拼接可以用来动态创建路径下的文件
f = open(new_file, mode='w')
f.close()