【Python】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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值