知识点目录
1.函数.方法.属性的特点
2.os的常用方法
3.os.path的常用方法和属性
4.相对路径和绝对路径的特点
5.删除一个文件夹的基本逻辑
6.windows.linux.unix系统出现的时间顺序
7.linux和unix 关系
8.os.path.pardir和curdir含义
9.如何根据时间戳转换时间
10.文件大小的基本单位有哪些
11.文件大小怎么转换成相应单位
12.文件读和写的基本步骤
13.文本模式有哪些
14.读的方式有哪些
15.写的方式有哪些
16.文件后缀的作用
17.如何立刻写入数据flush
18.close()的作用
19.统计单词个数的两种写法
20.异常捕获的基本格式
21.常见的异常类型
22.Exception 跟其它异常有什么关系
23.如何打包并发布模块

1.函数.方法.属性的特点

   # 带括号的叫方法os.remove()#不带括号的叫属性os.name#直接调用带括号的叫函数 如dir()

2.os的常用方法

# 1)os 打点
# 带括号的叫方法os.remove()   不带括号的叫属性os.name
# 直接调用带括号的叫函数 如dir()# 1.1返回当前文件夹的绝对路径
# 绝对路径:完整路径
# 相对路径:路径的一部分
dir_path = os.getcwd()
print(dir_path)
# 输出结果  C:\Users\Administrator\Desktop\python\2019-7-29# 1.2 返回一个列表包含了当前文件夹所有文件的名字(只有一层)
file_list = os.listdir(dir_path)
print(file_list)
# 输出结果 ['.idea', '1.os和文件操作.py', '2.文件操作.py', '3.文件读写练习.py', 'en.txt', 'file.txt']# 1.3 删除文件
# 绝对路径
#os.remove(dir_path+'/'+'a')
# 相对路径
# os.remove('a')
# 删除文件夹(只能删除空白文件夹)  若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
# os.removedirs('imgs')# 案例1:删除imgs文件夹下的所有文件后删除imgs文件夹
# dir_file_name = os.listdir(dir_path+'/'+'imgs')
# for file_name in dir_file_name:
#     jpg_path = dir_path+'/'+'imgs/'+file_name
#     os.remove(jpg_path)
# os.removedirs(dir_path+'/'+'imgs')# 1.4路径的拼接和斜杠的写法
# 字符串中 \ 表示转义字符  \\ 表示反斜杠
dir_name1 = 'imgs\\'
dir_name2 = 'ivskyimgs'
dir_path1 = os.path.join(dir_name1,dir_name2)
print(dir_path1)
# 输出结果 imgs\ivskyimgs
dir_path2 = os.path.join(dir_name1,'a','b','c')
print(dir_path2)
# 输出结果 imgs\a\b\c# 1.5 获取当前系统类型以及对应的路径分隔符
# nt = Windows  posix = Linux/Unix
# 时间上 : 先有Unix 再有Windows 后有Linux
# Linux是由Unix 演变而来的 Unix是Linux的父亲
sys_name = os.name
print(sys_name)
# 输出结果 nt# 分隔符
path_sep = os.path.sep
print(path_sep)
# 输出结果 \# os.path.pardir  pardir = ParentDirectory 上上级文件夹 ..
# os.path.curdir  curdir = CurrentDirectory 当前文件所在的文件夹 .# 1.6 创建文件夹
# 只能创建单个目录,且文件夹不能存在,一般和os.path.exists搭配使用
# os.mkdir()
if not os.path.exists('imgs'):os.mkdir('imgs')
# 创建多级目录且文件夹不存在,可以和os.path.exists搭配使用或者设置exist_ok=True
os.makedirs('imgs\\a\\b\\c',exist_ok=True)# 1.7 获取文件属性
# os.stat()
file_state = os.stat('1.txt')
print(file_state)
# 输出结果
# os.stat_result(st_mode=33206, st_ino=15481123719261257, st_dev=2325841219, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1564367476, st_mtime=1564367476, st_ctime=1564367476)
# st_size 文件大小 单位为字节
print(f"文件大小为{file_state.st_size}字节")
# st_mtime  修改时间  st_atime 访问时间  st_ctime创建时间
# access 访问  modify 修改   create 创建
print(f"文件创建时间{file_state.st_ctime}")
local_time = time.localtime(file_state.st_ctime)
# Y/y=year m=month d=day H=Hour M=Minute S=Second
local_time = time.strftime("%Y--%m--%d %H:%M:%S",local_time)
print(f"文件创建时间{local_time}")

3.os.path的常用方法和属性

# 2)os.path打点
# 是否为文件/文件夹
# os.path.isfile() os.path.isdir()
# abs = absolute=绝对的 是否为绝对路径
# os.path.isabs()
path,ext_name=os.path.splitext('imgs\\1.jpg')
result=os.path.splitext('imgs\\1.jpg')
print(path,ext_name)
# 输出结果  imgs   .jpg
print(result)
# 输出结果   ['imgs\\','.jpg']# 返回上级文件夹的路径
dir_name = os.path.dirname('imgs\\a')
print(dir_name)
# 输出结果  imgs# 返回路径的最后一个部分
base_name = os.path.basename('imgs\\a\\b\\1.jpg')
print(base_name)
# 输出结果 1.jpg# os.path.getatime(文件绝对路径/文件相对路径)       获取文件访问时间
# os.path.getctime(文件绝对路径/文件相对路径)		获取文件创建时间
# os.path.getmtime(文件绝对路径/文件相对路径)     	获取文件修改时间
# os.path.getsize(文件绝对路径/文件相对路径)		获取文件大小,单位为字节

4.相对路径和绝对路径的特点

绝对路径指的是绝对位置,完整地描述了目标的所在地,所有目录层级关系是一目了然的
相对路径指的是相对于当前文件的路径,相对路径通常用几个特殊符号来表示
“…/”代表当前文件所在文件夹的上一级文件夹
“./”表示当前文件所在的文件夹

5.删除一个文件夹的基本逻辑

要想删除一个文件夹,首先删除该文件夹下的所有文件
再删除该文件夹

6.windows.linux.unix系统出现的时间顺序

时间上 : 先有Unix 再有Windows 后有Linux

7.linux和unix 关系

Linux是由Unix 演变而来的 Unix是Linux的父亲

8.os.path.pardir和curdir含义

os.path.pardir pardir = ParentDirectory 上上级文件夹
os.path.curdir curdir = CurrentDirectory 当前文件所在的文件夹

9.如何根据时间戳转换时间

print(f"文件创建时间{file_state.st_ctime}")
local_time = time.localtime(file_state.st_ctime)
# Y/y=year m=month d=day H=Hour M=Minute S=Second
local_time = time.strftime("%Y--%m--%d %H:%M:%S",local_time)
print(f"文件创建时间{local_time}")

10.文件大小的基本单位有哪些

# 文件大小转换常识
# 位 =bit比特 = b
# 字节= byte = B
# 千字节 = killobytes =kb
# 兆字节 = MB
# 吉字节 = GB
# TB PB# 逻辑上
# 1B=8b
# 1kb = 1024B# 实际上
# 1B= 8b
# 1kb=1000B

11.文件大小怎么转换成相应单位

见知识点10

12.文件读和写的基本步骤

读数据
# 打开文件
# 读数据
# 关闭写数据
# 新建打开
# 写入数据
# 保存关闭

13.文本模式有哪些

# 文件的读写模式
# w=write 写入  特点:1.文件不存在则会新建  2.每次打开就会清空(覆盖)
# r=read 读入  特点:文件必须存在
# a=add/append 追加 特点:1.文件不存在则新建  2.每次打开数据会追加
# r+ a+ w+ 以读写方式打开
# wb 以二进制形式写
# rb  以二进制形式读
# ab  以二进制形式追加
# wb+ rb+ ab+ 以二进制形式读写

14.读的方式有哪些

# open默认模式为r
f=open('num.txt','r',encoding='utf-8')
# 小文件read() 读取所有   大文件read(读取大小) \n占一个大小
# 读/写 的时候会修改文件句柄f的位置
# content = f.read(5)
# print(content)
# 输出结果
# 6
# 12
# 三个数字两个换行 共5个# f.readline() 读取一行
# f.readline(大小) 从该行中读取前多少个
# f.readlines()  读取所有,返回列表
lines = f.readlines()
print(lines)
f.close()

15.写的方式有哪些

f = open('file.txt','w',encoding='utf_8')
f.write('张三')
f.writelines(['a','b','c','d'])
# f.seek(0)
# content = f.read()
# print(content)
f.close()

16.文件后缀的作用

文件后缀的作用 通过后缀计算机可以选择合适的软件打开

17.如何立刻写入数据flush

# 3.边写边保存(不要频繁打开关闭,影响性能)  使用flush将缓存中的数据写入内存
## 创建一个列表表示姓
# 创建一个列表表示名
# 随机生成100个姓名写入到文件name.txt中
# 读取第20-45个姓名重新写入到新文件new_name.txt中
# 删除name.txt
from random import choice
import osna = ['张','王','李','赵','刘','钱','孙','周','吴','杨']
me = ['都','新','府','星','分','翼','轸','地','接','衡','庐','襟','三','江','一','而','带','五','湖','控','蛮','荆','而','引','瓯','越','物','华','天','宝','龙','光','射','牛']
f = open('name.txt', 'w', encoding='utf-8')
for i in range(100):name = choice(na) + choice(me)f.write(name + '\n')f.flush()
f.close()
f = open('name.txt', 'r', encoding='utf-8')
names = f.readlines()[20:45]
f.close()f = open('new_name.txt', 'w', encoding='utf-8')
f.writelines(names)
f.close()os.remove('name.txt')

18.close()的作用

close的作用 每次open都要记得close(如果不写,系统会在某个时间保存并关闭,数据有可能丢失)

19.统计单词个数的两种写法

# 1.读取en.txt,对数据进行清洗(去除特殊符号.脏数据.不符合条件的数据.对数据格式化)
# 2.统计单词个数(忽略大小写.忽略缩写)
# 3.统计单词数最多的前三名第一种
# with open('en.txt','r',encoding='utf-8') as f:
#     lines = f.readlines()
# word_count={}
# for line in lines:
#     # 字符串.strip() 去除两端的特殊符号(\r\n\t空格等)
#     line =line.strip().lower().replace(',',' ').replace('.',' ').replace('?',' ').replace('!',' ')
#     if not line:
#         continue
#     words = line.split(' ')
#     for word in words:
#         if word in word_count:
#             word_count[word]+=1
#         else:
#             word_count[word]=1
# print(word_count)第二种
from collections import Counter
with open('en.txt',encoding='utf-8') as f:word_info = f.read()word_info = word_info.lower().replace('\n',' ').replace(',',' ').replace('.',' ').replace('?',' ').replace('!',' ')word_info = word_info.split()
counter = Counter(word_info)
print(counter)
top_3 = counter.most_common(3)
print(top_3)

20.异常捕获的基本格式

# 异常捕获:当你的代码中可能有错误的时候
#为了避免错误导致整个项目退出,可以使用异常捕获来解决
# 请写出异常捕获的基本格式
# finally中一般放文件关闭和数据库关闭操作如f.close()# try:
#     可能出错的代码
# except 错误类型1 as e:
#     出错以后干什么
# except 错误类型2 as e:
#     出错以后干什么
# finally:
#     不管有没有错,都会执行
print("程序到这位置正常")
try:name_list = ['a', 'b', 'c']name = name_list[3]print(name)
except Exception as e:print("程序出错",e)
finally:print("不管出没有出错,都会执行")# 常见的错误类型
# IndexError TypeError KeyError NameError ImportError FileNotFoundError PermissionErrortry:f = open('x.txt', 'r', encoding='utf-8')content = f.read()print(content)
# 在知道错误类型的情况下写错误类型
# 不知道错误类型的情况下写Exception
except Exception as e:print('文件不存在',e)finally:f.close()

21.常见的异常类型

常见的错误类型
IndexError TypeError KeyError NameError ImportError FileNotFoundError PermissionError

22.Exception 跟其它异常有什么关系

# 在知道错误类型的情况下写错误类型
# 不知道错误类型的情况下写Exception
try:pass
except Exception as e:

Exception是其它所有异常的基类,可以理解为其它所有异常都是通过Exception演变而来

23.如何打包并发布模块

# pip install 包名
# import 模块
# from 模块 import 模块# 把自定义模块打包
# https://www.cnblogs.com/Yemilice/p/10529720.html# 把自定义模块上传到pip
# https://blog.csdn.net/qq_38486203/article/details/83659287

打包的基本步骤

  1. 准备好你的模块
    2.在模块同级目录下创建setup.py文件
  2. 在文件中配置作者、邮箱、说明、要打包的文件等
    4.执行相关命令 build sdist
    5.将生成的.tar文件发布到pypi这个网站中
    6.就可以通过pip install 进行安装了