文章目录
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
1.file文件操作
创建文件对象open()
1.1write()/writelines()写入文件
close()关闭文件流
#测试关闭文件流
try:
f = open(r"a.txt","a")
str = "\ngaoqi\n"
f.write(str)
strs = ["aa\n","bb\n","cc\n"]
f.writelines(strs)
except BaseException as e:
print(e)
finally:
f.close()
1.2 with语句(上下文资源管理器)
#测试with管理文件写入操作
strs = ["高琪\n","高老二\n","高老三\n"]
with open(r"a.txt","a") as f:
f.writelines(strs)
1.3 文本文件的读取
1.read(【size】)
从文件中读取size个字符,并作为结果返回。如果没有size参数,则读取整个文件。读取到文件末尾会返回空字符串
#测试read文件读取
with open(r"e.txt","r",encoding="utf-8") as f:
str = f.read(4)
print(str)
#测试读取整个文件
with open(r"e.txt","r",encoding="utf-8") as f:
for a in f:
print(a,end="")
2.readline()
读取一行内容作为结果返回。读取到文件末尾,会返回空字符串
3.readlines()
文本文件中,每一行作为一个字符串存入列表中,返回该列表
enumerate()函数的使用
#测试读取、更改内容
with open("e.txt","r",encoding="utf-8") as f:
lines = f.readlines()
lines = [line.rstrip()+" #"+str(index+1)+"\n" for index,line in enumerate(lines)] #推导式生成列表
with open("e.txt","w",encoding="utf-8") as f:
f.writelines(lines)
# 测试二进制文件拷贝
with open("aa.gif","rb") as f:
with open("aa_copy.gif","wb") as w:
for line in f.readlines():
w.write(line)
print("图片拷贝完成")
# 测试读取文件名f.name(),读取指针位置f.seek()
with open("a.txt","r",encoding="utf-8") as f:
print("文件名是:{0}".format(f.name))
print(f.tell())
print("读取的内容:{0}".format(str(f.readline())))
print(f.tell())
f.seek(5)
print("读取的内容:{0}".format(str(f.readline())))
print(f.tell())
1.4 使用pickle序列化
pickle内部实现序列化a1 = b1…等,但是a1和b1的id不同,表示不是同一个对象
# 测试pickle
import pickle
a1 = "高琪"
a2 = 234
a3 = [10,20,30,50]
with open("data.dat","wb") as f:
pickle.dump(a1,f)
pickle.dump(a2,f)
pickle.dump(a3,f)
with open("data.dat","rb") as f:
b1 = pickle.load(f)
b2 = pickle.load(f)
b3 = pickle.load(f)
print(id(a1));print(id(b1))
1.5 CSV文件的操作
表格内容用逗号分隔开了
# 测试测试CSV文件的读取和写入
import csv
with open("dd.csv","r") as f:
a_csv = csv.reader(f)
print(list(a_csv))
for row in a_csv:
print(row)
with open("ee.csv","w") as f:
b_csv = csv.writer(f)
b_csv.writerow(["id","姓名","年龄"])
c = [["1002","茜茜","3"],["1004","东东","4"]]
b_csv.writerows(c)
2. os和os.path模块
# 测试os
import os
# os.system("notepad.exe")
# os.system("regedit")
#os.system("ping www.baidu.com")
#os.system("cmd")
#直接调用可执行文件
os.startfile(r"D:\Program Files (x86)\Tencent\WeChat\WeChat.exe")
2.1 os模块_文件和目录操作
#coding=utf-8
#测试os模块中,关于文件和目录的操作
import os
#获取文件和文件夹相关信息
print(os.name) #window->nt linux和unix->posix
print(os.sep) #window->\ linux和unix->/
print(repr(os.linesep)) #window->\r\n linux和unix->\n\
print(os.stat("mypy01.py"))
#关于工作目录的操作
print(os.getcwd())
os.chdir("e:") #改变当前的工作目录为e:\盘根目录
os.mkdir("书籍")
#创建目录、创建多级目录、删除
os.mkdir("书籍")
os.rmdir("书籍") #相对路径都是相对于当前的工作目录
#os.makedirs("电影/港台/周星驰") #只能删除空目录
os.removedirs("电影/港台/周星驰")
os.makedirs("../音乐/香港/刘德华") #../指的是上一级目录
os.rename("电影","movie")
dirs = os.listdir("movie")
print(dirs)
2.2 os.path模块
#coding=utf-8
#测试os.path中关于目录、路径的操作
import os
import os.path
print(os.path.isabs("e:/a.txt"))
#或者写为
import os
from os import path
print(path.isabs("e:/a.txt"))
#coding=utf-8
#测试os.path中关于目录、路径的操作
import os
import os.path
#判断:绝对路径、是否目录、是否文件、文件是否存在
print(os.path.isabs("e:/a.txt")) #True
print(os.path.isdir("e:/a.txt")) #False
print(os.path.isfile("e:/a.txt")) #False(因为a.txt不存在)
print(os.path.exists("e:/a.txt")) #False
#获取文件基本信息
print(os.path.getsize("e:/a.txt"))
print(os.path.abspath("e:/a.txt"))
print(os.path.dirname("e:/a.txt"))
print(os.path.getctime("e:/a.txt"))
print(os.path.getatime("e:/a.txt"))
print(os.path.getmtime("e:/a.txt"))
#对路径的操作
path = os.path.abspath("e:/a.txt")
print(os.path.split(path))
print(os.path.splitext(path))
print(os.path.join("aa","bb","cc"))
#coding=utf-8
#列出指定目录下的所有的.py文件,并输出文件名
import os
path = os.getcwd()
file_list = os.listdir(path) #列出子目录,子文件
for filename in file_list:
if filename.endswith("py"):
print(filename)
print("#######")
file_list2 = [filename for filename in os.listdir(path) if filename.endswith("py")]
for f in file_list2:
print(f,end="/t")
2.3walk()递归遍历所有文件和目录
os.walk()方法:
返回一个三个元素的元组,(dirpath,dirnames,filenames)
dirpath:要列出指定,目录的路径
dirnames:目录下的所有文件夹
filenames:目录下的所有文件
# coding=utf-8
# 测试os.walk()递归遍历所有子目录和子文件
import os
all_files = []
path = os.getcwd()
list_files = os.walk(path)
for dirpath, dirnames, filenames in list_files:
for dir in dirnames:
all_files.append(os.path.join(dirpath, dir))
for file in filenames:
all_files.append(os.path.join(dirpath, file))
#打印所有的子目录和子文件
for file in all_files:
print(file)
3.shutil模块
3.1 拷贝
# coding=utf-8
# 测试shutil模块的用法:拷贝、压缩
import shutil
#shutil.copyfile("a.txt","a_copy.txt")
#shutil.copytree("s/sss","a/aaa") #只能拷贝到不存在的目录
shutil.copytree("s/sss","a/aaa",ignore=shutil.ignore_patterns("*.txt","*.html")) #可以忽略txt/html等格式的文件
3.2 压缩
#压缩/解压缩
import zipfile #压缩工作可以更加精细
#shutil.make_archive("电影/gg","zip","电影/港台")
# z1 = zipfile.ZipFile("e:/a.zip","w")
# z1.write("a.txt")
# z1.write("a_copy.txt")
# z1.close()
z2 = zipfile.ZipFile("e:/a.zip","r")
z2.extractall("a")
z2.close()
4. 递归算法
递归包括:递归头、递归体
# coding=utf-8
# 测试递归算法,使用递归计算阶乘
def factorial(n):
if n == 1:
return n
else:
return n*factorial(n-1)
i = 15
print("{0}的阶乘为:{1}".format(i,factorial(i)))
使用递归展示一个树结构
# coding=utf-8
# 递归打印所有的目录和文件
import os
allFiles = []
def getAllFiles(path,level):
childFiles = os.listdir(path)
for file in childFiles:
filepath = os.path.join(path,file)
if os.path.isdir(filepath):
getAllFiles(filepath,level+1)
allFiles.append("\t"*level+filepath)
getAllFiles("a",0)
for f in reversed(allFiles):
print(f)