美文网首页
Python基础-day10

Python基础-day10

作者: 陈small末 | 来源:发表于2019-01-11 08:56 被阅读0次

list

​ os模块

​ os.path模块

​ 文件操作

os模块 sys解析命令行参数(去学习)

import os
执行系统命令
os.system(命令)

res = os.name #nt 表示的是windows  posix 表示Linux UNIX Mac
print(res)

# res = os.uname() #操作系统的信息  windows报错
# print(res)

# 获取当前路径
res = os.curdir
print(res)

# 获取当前路径的绝对表示
res = os.getcwd()
print(res)

# 用来修改当所在的一个位置
res = os.chdir("D:\MyDownloads")
print(os.getcwd())

# 创建目录
# res = os.mkdir(r"E:\工作目录\基础阶段\day10\资料\test")
# print(res)

# 创建目录 如果父级目录不存在 那么也会被创建
# os.makedirs(r"E:\工作目录\基础阶段\day10\资料\test\a\b")

#  删除目录(只能删除空目录)
# os.rmdir(r"E:\工作目录\基础阶段\day10\资料\test\a\b")

#
# os.removedirs(r"E:\工作目录\基础阶段\day10\资料\test\a")

# 重命名目录
# os.rename(r"E:\工作目录\基础阶段\day10\资料\test\a\b", r"E:\工作目录\基础阶段\day10\资料\test\a\bb")
# 重命名文件(注意:要写绝对路径)
# os.rename(r"E:\工作目录\基础阶段\day10\资料\test\a\s.txt", r"E:\工作目录\基础阶段\day10\资料\test\a\s.py")

#创建文件(windows报错)
# os.mknod(r"index.txt")
# os.mknod("t.txt")
# 或者使用open
# open(r"E:\工作目录\基础阶段\day10\资料\test\a\s.txt", "w")

# 删除文件
# os.remove(r"E:\工作目录\基础阶段\day10\资料\test\a\s.txt")

# 获取某个目录下的文件或者目录的名字
res = os.listdir(r"E:\工作目录\基础阶段\day09\视频")
# print(res)

# 获取文件的信息
res = os.stat(r"E:\工作目录\基础阶段\day10\资料\test\a\s.py")
print(res)

# 获取环境变量
res = os.environ
print(res.get("path"))

os的path操作(比较重要)

from os import path as p

# 判断是不是文件
res = p.isfile(r"E:\工作目录\基础阶段\day10\资料\test\a")
print(res)

# 判断文件或目录是否存在
res = p.exists(r"E:\工作目录\基础阶段\day10\资料\test\a\666.txt")
print(res)

res = p.abspath("666.txt")
print(res)

# print(__file__)
# 当前程序的绝对路径
print(p.abspath(__file__))

# 获取目录末尾的文件名字
res = p.basename(r"E:\工作目录\基础阶段\day10\资料\test\a\666.txt")
print(res)

# 获取当前程序运行文件的文件名字
current_file_name = p.basename(__file__)
print(current_file_name)

# 获取目录
res = p.dirname(r"E:\工作目录\基础阶段\day10\资料\test\a\666.txt")
print(res)
# 获取当前程序运行文件的所属目录
print(p.dirname(__file__))

# 切分路径 得到是元组
res = p.split(r"E:\工作目录\基础阶段\day10\资料\test\a\666.txt")
print(res)
res = p.split(r"E:\工作目录\基础阶段\day10\资料\test\a")
print(res)

# 切分文件的后缀 如果给出的是目录 那么切分得到元组 第二项是空
res = p.splitext(r"E:\工作目录\基础阶段\day10\资料\test\a")
print(res)
print(p.splitext(r"E:\工作目录\基础阶段\day10\资料\test\a\666.txt"))

# 路径拼接
res = p.join(r"E:\工作目录\基础阶段\day10\资料", "999.txt")
print(res)
print(p.exists(res))
# 在运行文件的同级 创建一个index.py文件
# 先确定程序运行路径
my_dir = p.dirname(__file__)
# 拼接文件的绝对路径
file_path = p.join(my_dir, "index.py")
# 使用open
# open(file_path, "w")

# print(file_path.isdir)
# 判断一个是不是目录
res = p.isdir(file_path)
print(res)

# 获得文件大小
res = p.getsize(r"E:\工作目录\基础阶段\day10\资料\test\a\666.txt")
print(res)

文件操作(读 写)

输入输出(io流)

​ 参考物:程序(文件)

输入:将内容或数据 写入到文件的过程 input raw_input

输出:从文件或程序 读出内容 print()

文件读操作

我们要操作文件 必须要先打开文件

open函数(文件路径,打开模式)

打开模式

w 只写模式 如果文件不存在 就创建 如果存在 将会覆盖掉原来的所有内容
a 追加模式 如果文件不存在 就创建 如果存在 在其文件末尾继续填入新的内容
r (read)  只读模式 如果不存在就报错
x 写入模式 但是如果文件存在 那么保存
w+ r+ a+ x+ 读写模式
wb 写二进制数据
rb 读二进制数据
ab 追加二进制数据
    二进制方式保存写入数据例子:图片 音频文件 视频文件

read函数

如果参数不写 那么就把文件全都读取出来,如果是给了数字 那就读取规定个数的字符

注意:程序不能处理外部垃圾,也就意味着文件句柄 使用完毕以后需要手动关闭,python自动关闭文件不稳定

我们最好自己手动去关闭(close) 养成一个好习惯

文件句柄.closed 来判断是不是已经被关闭了

如果不想写close 可以使用with open() as 句柄这样的形式 示例如下

with open("lal.txt", "r") as f2,  open("lal.txt", "rb") as f4:
    print(f2.read())
    print(f4.read(2).decode("gbk"))

文件指针

​ read读取以后 文件指针向下移动 不会自己跑到文件的开始

​ tell 获取当前指针位置

​ seek 移动文件指针

​ 如果写的是seek(0) 回到文件的头

​ 如果写了两个参数(偏移量(默认是向右,输过是负数 就向左移动), 参考位置(0表文件头 1表当前位置,2文件的末尾))

readline(limit)函数

​ 默认是读取一行,当我们指定limit参数值后 他就读取该行的最多limit个内容

写操作

​ 先打开文件 打开模式就要写有关系了 w wb w+ a x

​ write(字符)

​ writelines(序列)

with open("heheda.txt", "w") as f1:
    f1.write("再带你们一周!!!")

# with open("append.txt", "a") as f2:
#     f2.write("需要发票!!!滴滴的也行\nuuuuu")
#
f3 = open("new.txt", "a+")
data = ["新诗\n", "你是我永远都不想修复的bug\n", "爱你就是个死循环\n"]
f3.writelines(data)
f3.close()

循环读取

​ 解决文件过大 不能一次读取的问题

import os
path = r"E:\工作目录\基础阶段\day10\资料\作业\youbian.txt"
f1 = open(path, "r", encoding="utf-8")
has_read = 0
# 获取文件大小
file_size = os.path.getsize(path)
READ_NUM = 100
while has_read < file_size:
    res = f1.read(READ_NUM)
    # print(res)
    if len(res) <= 0:
        pass
    else:
        print(res)
    has_read += READ_NUM

复制文件

​ 复制的是数据:将一个文件的内容读取出来然后 写入新的文件

解归档

把我们程序里面的数据结构 完整保存到我们文件里

以及读取

使用pickle包

import pickle

a = {"hehe": "88", "age":12}
# 归档
# my_file = open("my_pickle.txt", "wb")

# pickle.dump(a, my_file)

# 解档
my_file = open("my_pickle.txt", "rb")
res = pickle.load(my_file)
print(res, type(res))
my_file.close()

相关文章

网友评论

      本文标题:Python基础-day10

      本文链接:https://www.haomeiwen.com/subject/qhhvrqtx.html