文件的基本操作

内置函数-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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值