import os
path = os.getcwd() #当前工作路径
os.chdir(path) #修改当前路径
常用的编码:
ASCI工:美国通用信息交换码表,比较早的码表,目前的大多数码表都兼容它,它主要记录:数字,字母,特殊符号及其对应数字之间的关系.
gbk:主要针对于国内系列,1个中文占2个字节,其它(数字,字母,特殊符号)都只占1个字节.
Utf-8:万国码,统一码,主要针对于国际系列,1个中文3个字节,其它(数字,字母,特殊符号)都只占1个字节.
s1 = "你好"
#bys_u8 = s.encode(encoding='utf-8') #默认u8
bys_u8 = s.encode(encoding='utf-8') #
bys_gbk = s.encode(encoding='gbk')
文件操作
操作 | 功能 |
文件对象 = open(file, mode, encoding) | 打开文件获得文件对象 |
文件对象.read(num) | 读取指定长度字节 不指定num读取文件全部 |
文件对象.readline() | 读取一行 |
文件对象.readlines() | 读取全部行,得到列表 |
for line in 文件对象 | for循环文件行,一次循环得到一行数据 |
文件对象.close() | 关闭文件对象 |
with open() as f | 通过with open语法打开文件,可以自动关闭 |
打开open()
open(name, mode, encoding)
name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
mode:设置打开文件的模式(访问模式):只读、写入、追加等。
encoding:编码格式(推荐使用UTF-8)
f = open('python.txt', 'r', encoding='UT F-8')
# encoding的顺序不是第三位,所以不能用位置参数,用关键字参数直接指定
mode常用的三种基础访问模式
模式 | 描述 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。 如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。 如果该文件不存在,创建新文件进行写入。 |
rb | 读取二进制数据 |
wb | 覆盖写入二进制数据 |
ab | 追加写入二进制数据 |
读
read()
文件对象.read(num)
num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。
readlines()方法:
readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。
f = open('python.txt')
content = f.readlines()
# ['hello world\n', 'abcdefg\n', 'aaa\n', 'bbb\n', 'ccc']
print(content)
# 关闭文件
f.close()
readline()
方法:一次读取一行内容
f = open('python.txt')
content = f.readline()
print(f'第一行:{content}')
content = f.readline()
print(f'第二行:{content}')
# 关闭文件
f.close()
for循环读取文件行
src_f = open('./data/data.txt', 'utf-8', 'r')
line = line.rstrip()
if line:
print(line)
# 每一个line临时变量,就记录了文件的一行数据
while Thre:
line = src_f.readLine()
if line = '':
break
print(line, end = '')
while True:
line = src_f.readline()
if not line:
break
print(line, end='')
close() 关闭文件对象
f = open("python.txt", "r") f.close() # 最后通过close,关闭文件对象,也就是关闭对文件的占用 # 如果不调用close,同时程序没有停止运行,那么这个文件将一直被Python程序占用。
with open 语法
f = open("python.txt", "r")
f.close()
# 最后通过close,关闭文件对象,也就是关闭对文件的占用
# 如果不调用close,同时程序没有停止运行,那么这个文件将一直被Python程序占用。
写
write
# 1. 打开文件
f = open('python.txt', 'w')
# 2.文件写入
f.write('hello world')
# 3. 内容刷新
f.flush()
文件如果不存在,使用”w”模式,会创建新文件
文件如果存在,使用”w”模式,会将原有内容清空
追加
1. 打开文件,通过a模式打开即可
f = open('python.txt', 'a')
2.文件写入
f.write('hello world')
3. 内容刷新
f.flush()
a模式,文件不存在会创建文件
a模式,文件存在会在最后,追加写入文件
复制
src_f1 = open('./data/1.jpg', 'rb')
src_f2 = open('./data/1.bak.jpg', 'ab')
rdata = src_f1.read()
src_f2.write(rdata)
src_f2.flush()
src_f1.close()
src_f2.close()
with open('./data/bill.txt', 'r', encoding='utf-8') as src_f, open('./data/bill2.txt', 'a', encoding='utf-8') as src_f2:
while True:
data = src_f.read(1024)
if len(data) <= 0:
break
src_f2.write(data)
第三方API
import shutil
shutil.copyfile('./data/1.jpg', './data/1.bak.jpg')
os模块实现文件与文件夹操作
导入os模块 :import os
文件操作
编号 | 函数 | 功能 |
1 | os.rename(目标文件名称,新文件名称) | 对文件进行重命名操作 |
2 | os.remove(要删除文件名称) | 对文件进行删除操作 |
3 | os.getcwd() | current work directory,获取当前目录名称 |
4 | os.path.isfile(path) | 判断是否是文件 |
5 | os.path.exists(path) | 判断文件是否存在(不区分文件与文件夹) |
文件夹操作
编号 | 函数 | 功能 |
1 | os.chdir(切换后目录名称) | change directory,切换目录 |
2 | os.listdir(目标目录) | 获取指定目录下的文件信息,返回列表 |
3 | os.mkdir(新文件夹名称) | 创建一个指定名称的文件夹 |
4 | os.rmdir(目标目录) | 用于删除一个指定名称的"空"文件夹 |
5 | os.path.isdir(目录) | 判断文件夹是否存在 |
递归删除非空目录
import shutil
# 调用rmtree方法递归删除非空目录
shutil.rmtree(path)
异常
try:
可能发生错误的代码
except:
如果出现异常执行的代码
捕获指定异常
try:
print(name)
except NameError as e:
print('name变量名称未定义错误')
捕获多个异常
try:
print(1/0)
except (NameError, ZeroDivisionError) as e:
print('ZeroDivision错误...'+e)
捕获所有异常
try:
print(name)
except Exception as e:
print(e)
异常else
try:
print(1)
except Exception as e:
print(e)
else:
print('我是else,是没有异常的时候执行的代码')
异常的finally
finally表示的是无论是否异常都要执行的代码,例如关闭文件
try:
f = open('test.txt', 'r')
except Exception as e:
f = open('test.txt', 'w')
else:
print('没有异常,真开心')
finally:
f.close()