0基础学Python——os模块、path模块、文件读写、csv模块、文件copy、csv与excel转换
os模块
相对路径: 相对于当前文件的路径
./: 当前目录
…/: 回到上一层目录
1-os模块:…/day10/01-异常引入
fools: …/…/day12/1-os模块
绝对路径: 直接从盘符开始, E:\test\data.txt
获取系统相关信息
print(os.environ) # 获取系统环境变量
print(os.name) # nt 获取系统名称
# E:\Python2410\pythonProject-01\day13
print(os.getcwd()) # 获取当前目录的绝对路径
print(os.sep) # 获取路径 分隔符
目录创建
os.makedirs('./data') # 创建目录,目录已存在报FileExistsError
# r,代表字符串原始形式
os.makedirs(r'F:\abc') # 当前目录下创建目录
os.makedirs('./data/abc') # 递归创建目录
print(os.listdir('./data')) # 查看当前目录下的所有文件和目录
目录和文件删除
os.remove(r'./data/a.txt') # 文件删除
os.removedirs(r'./data/abc') # 递归删除所有嵌套空目录
os.rmdir(r'./data/abc') # 递归删除最后一层空子目录
path模块
import os.path
# E:\python2410\pythonProject-01\day12
print(os.path.abspath('.')) # 当前目录绝对路径
print(os.getcwd())
print(os.path.curdir) # . 当前相对路径
获取路径最后一层的名字
print(os.path.basename(r'E:\python2410\pythonProject-01\day13\07path模块.py')) # 07path模块.py
路径分割与合并
# ('E:\\python2410\\pythonProject-01\\day13', '07path模块.py')
print(os.path.split(r'E:\python2410\pythonProject-01\day13\07path模块.py')) # ('E:\\python2410\\pythonProject-01\\day13', '07path模块.py')
# E:\\python2410\\pythonProject-01\\day13\07path模块.py
print(os.path.join(r'E:\\python2410\\pythonProject-01\\day13', '07path模块.py')) # E:\\python2410\\pythonProject-01\\day13\07path模块.py
判断路径是否存在
print(os.path.exists(r'E:\\python2410\\pythonProject-01\\day13')) # True
print(os.path.exists(r'E:\\python2410\\pythonProject-01\\day13\07path模块.py')) # True
判断是否是文件
print(os.path.isfile(r'E:\\python2410\\pythonProject-01\\day13')) # False
print(os.path.isfile(r'E:\python2410\pythonProject-01\day13\06os模块.py')) # True
判断是否是目录
print(os.path.isdir(r'E:\python2410\pythonProject-01\day13\07path模块.py')) # False
print(os.path.isdir(r'E:\python2410\pythonProject-01\day13')) # True
返回目录下的所有子文件和子目录列表,不是目录则报错
print(os.listdir(r'E:\python2410\pythonProject-01\day13'))
获取目录下的所有文件列表
def getdirs(directory):
if os.path.isfile(directory):
raise Exception('请填写正确的目录')
ls = os.listdir(directory)
res = []
for l in ls:
s = os.path.join(directory, l)
if os.path.isfile(s):
res.append(s)
else:
res.extend(getdirs(s))
return res
print(getdirs(r'E:\python2410\pythonProject-01\day13'))
文件读写
mode取值
r: 只读, 文件不存在会报错
w: 只写,文件不存在会新建, 原来的内容会被覆盖
a: 追加写, 文件不存在会新建, 原来的内容不会被覆盖
r+:可读可写, 文件不存在会报错,原来的内容会被覆盖
w+:可读可写, 文件不存在会新建, 原来的内容会被覆盖
a+:可读可写, 文件不存在会新建, 原来的内容不会被覆盖
文件写
wf=open(‘文件路径’, ‘mode读写模式’, encoding=‘utf-8’)
wf.write() 写一句
wf.writelines(ls) 写多行
文件读
rf=open(‘文件路径’, ‘mode读写模式’, encoding=‘utf-8’)
wf.seek(0) 指针置于头部
wf.read() 读取所有
wf.readline() 每次读取一行
wf.readlines() 读取多行
with open(‘文件路径’, mode=‘a+’, encoding=‘utf-8’) as f:
pass
# 无需写close操作,会自动关闭资源
写文件
wf = open('./PATH/file_read_write.txt', 'a+', encoding='utf-8')
执行写
wf.write('Hello World')
wf.write('Hello World\n')
wf.write('Hello World\n')
wf.write('Hello World\n')
wf.write('Hello World\n')
ls = ['Hello', 'hELLO\n', 'World', 'wORLD\n']
wf.writelines(ls)
关闭资源
wf.close()
读文件
rf = open('./PATH/file_read_write.txt', 'a+', encoding='utf-8')
执行读
rf.seek(0) # 指针置于头部
print(rf.read()) # 一次性读取所有
rf.seek(0)
print(rf.readline())
print(rf.readline())
rf.seek(0)
print(rf.readlines())
关闭资源
rf.close()
读写结束后会自动关闭资源,不需要手动关闭
with open('./PATH/file_read_write.txt', 'a+', encoding='utf-8') as f:
f.seek(0)
print(f.read())
csv模块
写
with open('./PATH/a.csv', 'w', newline='', encoding='utf-8') as f:
wf = csv.writer(f)
wf.writerow(['name', 'age', 'sex'])
wf.writerows([
['张三', 18, '男'],
['李四', 20, '男'],
['王五', 22, '男']
])
读
with open('./PATH/a.csv', 'r', encoding='utf-8') as f:
rf = csv.reader(f)
# print(rf)
for e in rf:
print(e)
f.seek(0)
for i in rf:
print(i)
文件copy
shutil模块: 操作目录 或文件的 复制 移动
shutil.copyfile(文件1,文件2) 文件2复制文件1的内容
shutil.move(文件1,文件2) 剪切并复制文件1的内容 到 文件2
shutil.rmtree(文件或目录) 递归删除所有内容
文件copy
import shutil
with open('./PATH/a.csv', 'a+', encoding='utf-8') as f1:
f1.seek(0)
s = f1.read()
with open('./PATH/cop_a.csv', 'a+', encoding='utf-8') as f2:
f2.write(s)
shutil.copyfile('./PATH/a.csv', './PATH/cop_a_16.csv')
shutil.move('./data/a.txt', './data2/b.txt')
shutil.rmtree('./data2')
csv与excel转换
从csv读取并导入到excel
import pandas as pd
# 读
pr = pd.read_csv('./PATH/a.csv', encoding='utf-8')
# 导
pr.to_excel('./PATH/a.xlsx', sheet_name='name', index=False)
从excel读取并导入到csv
# 读
pr = pd.read_excel('./PATH/a.xlsx')
# 导
pr.to_csv('./PATH/a.csv', index=False)