目录
with上下文管理读取文本文件的例子
enumerate函数
二级制文件的读取和写入
图片拷贝
文件对象方法和属性
f.seek()用法
使用pickle序列化
CSV文件操作
os 和 os.path 模块
os.system 调用 windows系统记事本程序
os.startfile() 调用exe程序
os模块文件和目录模块
os.path
walk()递归遍历所有文件和目录
shutil模块 拷贝
递归算法打印目录树
with上下文管理读取文本文件的例子
with open(r"a.txt", "r",encoding="utf-8") as f:
str = f.read()
print(str)
print("*********")
with open(r"a.txt", "r", encoding="utf-8") as f:
str = f.read(3) # 空格也是一个字符
print(str)
print("*********")
with open(r"a.txt", "r", encoding="utf-8") as f:
str = f.readlines() # 空格也是一个字符
print(str)
print("*********")
with open(r"a.txt", "r", encoding="utf-8") as f:
for a in f:
print(a,end="")
print("*********")
enumerate函数
将文本文件每一行 后面加上行号
try:
with open(r"a.txt", "r", encoding="utf-8") as f1:
lines = f1.readlines()
lines = [line.rstrip() + "#" + str(index) +
"n" for index, line in enumerate(lines)]
with open(r"a.txt", "w", encoding="utf-8") as f2:
f2.writelines(lines)
except BaseException as e:
print("e")
二级制文件的读取和写入
加一个符号b
图片拷贝
with open('monkey.jpg', 'rb') as f:
with open('monkey_copy.jpg', 'wb') as w:
for line in f.readlines():
w.write(line)
print('图片拷贝完成!')
文件对象方法和属性
f.seek()用法
with open(r"a.txt", "r", encoding="utf-8") as f:
print("文件名是:{0}".format(f.name))
print(f.tell())
str = f.readline()
print(str)
print(f.tell())
f.seek(0)
print(f.readline())
使用pickle序列化
pickle.dump(obj,file) obj 是要被序列化的对象,file指的是存储的文件
pickle.load(file) 从file读取数据,反序列化对象
import pickle
a1="高"
a2=234
a3=[10,20,30]
with open (r"b.dat","wb") as f:
pickle.dump(a1,f)
print(id(a1))
pickle.dump(a2,f)
pickle.dump(a3,f)
with open (r"b.dat","rb") as f:
b1=pickle.load(f)
b2=pickle.load(f)
b3=pickle.load(f)
print(b1);print(b2);print(b3)
print(id(b1))
CSV文件操作
import csv
with open('111.csv','r') as f:
a_csv = csv.reader(f)
#print(list(a_csv))
for row in a_csv:
print(row)
with open('22.csv','w') as f:
b_csv=csv.writer(f)
b_csv.writerow(["id","name","年龄"])
b_csv.writerow(["1005","gao","18"])
c=[["id","name","年龄"],["1005","gao","18"]]
b_csv.writerows(c)
os 和 os.path 模块
os.system 调用 windows系统记事本程序
os.system("notepad.exe")
os.system 调用 windows系统记事本程序
os.system("notepad.exe")
os.system("cmd")
os.startfile() 调用exe程序
os模块文件和目录模块
os.path
打印工作目录下.py 文件
#coding = utf-8
import os
path = os.getcwd()
file_list = os.listdir(path)
for filename in file_list:
if filename.endswith("py"):
print(filename, end='t')
print("*****")
file_list2 = [filename for filename in os.listdir(path) if filename.endswith("py")]
for f in file_list2:
print(f, end="t")
walk()递归遍历所有文件和目录
打印所有子目录和子文件全路径
# coding = utf-8
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)
shutil模块 拷贝
shutil.copyfile()
shutil.copytree(,ignore)
递归算法打印目录树
递归头
递归体
简单的程序是递归的优点之一。但是递归调用会占用大量的系统堆栈,内存耗用多,在递
归调用层次多时速度要比循环慢的多,所以在使用递归时要慎重。
# 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("111", 0)
for f in reversed(allfiles):
print(f)



