解释器运行自操作系统,操作系统有权限对硬盘做操作 程序–解释器–操作系统–处理硬盘 操作完成后,关闭解释器及操作系统相关的资源 以节省资源
#测试写入中文
# -*- coding:utf-8 -*-
f=open(r"b.txt","w",encoding="utf-8") #在这里声明用utf-8 则文档能正常显示中文
f.write("尚学堂\n百战程序员\n")
f.close()
#!usr/bin/env python
# -*- coding:utf-8 -*-
f=open(r"b.txt","w",encoding="utf-8")
s=["gaoyi\n","gaoer\n","gaosan\n"]
f.writelines(s)
f.close()
close 关闭打开的操作系统资源 结合异常机制,当编码程序中有异常时,仍旧能关闭文件
#!usr/bin/env python
# -*- coding:utf-8 -*-
try:
f=open(r"my01.txt","a")
str=["gaoyi\n","gaoer\n","gaosan\n"]
f.write(str)
except BaseException as e:
print(e)
finally:#不管有没有异常,这下边的必须执行 放个close语句来关闭文件
f.close()
#!usr/bin/env python
# -*- coding:utf-8 -*-
with open(r"d.txt","a") as f:#执行完with下边的对象,自动还原到with 前边的东西
#加上 r 就是保持字符串原始值的含义,即不对其中的符号进行转义。
f.write("i love y")
#转义字符会让某一个符号的含义改变。他可以赋予一些普通的字符特殊的含义,也可以让一些有特殊含义的字符回归普通。
#测试文件读取
# -*- coding:utf-8 -*-
with open(r"e.txt","r",encoding="utf-8") as f:
str=f.read(3)
print(str)
with open(r"e.txt","r",encoding="utf-8") #这里这不是说readlin()是返回一行吗 怎么没用上readline()
for a in f: #使用迭代器(每次返回一行) 迭代器的功能有点忘了
print(a,end="")
#!usr/bin/env python
# -*- coding:utf-8 -*-
a=["wo love u","尚学堂","百战程序员"]
b=enumerate(a)#把每个元素都加上索引号,并用元组包含起来
print(a)
print(list(b))
#打印结果 ['wo love u', '尚学堂', '百战程序员']
#打印结果 [(0, 'wo love u'), (1, '尚学堂'), (2, '百战程序员')]
a=["wo love u\n","尚学堂\n","百战程序员\n"]
b=enumerate(a)#把每个元素都加上索引号,并用元组包含起来
print(a)
print(list(b))
#推导式生成
with open("e.txt","r",encoding="utf-8") as f: #这里原本是有一个e.txt的内容,见下边的截图
lines=f.readlines()
lines=[temp.rstrip()+" #" +str(index)+"\n" for index,temp in enumerate(lines)]
#rstrip()去空白符
with open("e.txt","w",encoding="utf-8") as f:
f.writelines(lines)
with open("aa.gif","rb") as f: #拷贝aa的gif文件
with open("aa_copy.gif","wb") as w:
for line in f.readlines():
w.write(line)
print("图片拷贝完成。。。。。")
with open("e.txt","r",encoding="utf-8") as f:
print("wenjianmingshi:{0}".format(f.name))
print(f.tell())
print("读取的内容:{0}".format(f.readline()))
print(f.tell())
f.seek(3)
print("读取的内容:{0}".format(f.readline()))
import pickle
a1="gaoqi"
a2="234"
a3=[10,20,30,40]
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(b1);print(b2);print(b3)
print(id(a1));print(id(b1)) #测试这两个对象,是否是相同的地址
#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","姓名","年龄"])
b_csv.writerow(["1001", "高一", "18"])
c=[["1002","xixi","3"],["1003","xxxx","4"]]
b_csv.writerows(c)#加s表示一行一行写入
控制台乱码 file—setting—接着就直接修改所用的代码
import os
#os.system("notepad.exe") #调用记事本程序
#os.system("regedit")#调用注册表
#os.system("ping www.baidu.com")
#os.system("cmd") #调用cmd面板
os.startfile(r"C:\KMPlayer\KMPlayer.exe")#直接调用可执行文件
#coding=utf-8
#os 文件 目录的操作
import os
######获取文件和文件夹相关的信息#######
print(os.name) #windows->nt lunix和unix->posix
print(os.sep) #windows->| lunix和unix->/
print(repr(os.linesep)) #windows->\r\n lunix和unix->posix
print(os.stat("my02.py")) #显示文件信息
##工作目录##
#print(os.getcwd()) #获取当前工作目录
#os.chdir("d://") #改变工作目录为D盘
#os.mkdir("书籍")
##创建目录、创建多级目录、删除##
#os.mkdir("书籍")
#os.rmdir("书籍") #相对路径都是相对于当前的工作目录
#os.makedirs("电影/港台/轰走") #建立和删除多级目录,非空目录无法删除
#os.removedirs("电影/港台/轰走")
#os.makedirs("../音乐/香港/ldh") #../指的是上一级目录
#os.rename("电影","movie") #重命名原文件
dirs=os.listdir("movie") #返回该文件下的子文件
print(dirs)
#coding=utf-8
#测试os.path
import os
import os.path #from os import path
##判断:绝对路径、是否目录、是否文件、文件是否存在
print(os.path.isabs("d:/a.txt")) #true
print(os.path.isdir("d:/a.txt")) #f
print(os.path.isfile("d:/a.txt")) #t
print(os.path.exists("d:/a.txt")) #f
##获取文件基本信息
print(os.path.getsize("b.txt")) #返回文件大小
print(os.path.abspath("b.txt")) #返回绝对路径
print(os.path.dirname("d:/a.txt")) #返回目录的路径
print(os.path.getctime("b.txt")) # 创建时间 1970年零时零刻是绝零点
print(os.path.getatime("b.txt"))# 文件访问时间
print(os.path.getmtime("b.txt")) #最后修改时间
## 对路径的操作
path=os.path.abspath("b.txt") #拿到绝对路径
print(os.path.split(path)) # split 按照目录 文件进行切割
print(os.path.splitext(path)) #返回文件扩展名,按点进行切割
print(os.path.join("aa","bb","cc")) #路径的连接 连接多个path
#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") #转义符号
#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))
#print(os.path.join(dirpath,dir))
for file in filenames:
all_files.append(os.path.join(dirpath,file))
#print(os.path.join(dirpath,file))
#打印所有的子目录和子文件
for file in all_files:
print(file)
#coding=utf-8
#测试shutil模块的用法:拷贝,压缩
import shutil
#shutil.copyfile("1.txt","1_copy.txt") #简单的文件拷贝
#shutil.copytree("movie/港台","电影") #电影目录不存在时才能正常拷贝
shutil.copytree("movie/港台","电影",ignore=shutil.ignore_patterns("*.txt")) #拷贝时可忽略一些不需要的文件
import shutil
import zipfile
#压缩、解压缩
#shutil.make_archive("电影/gg","zip","movie/港台")
#z1=zipfile.ZipFile("d:/a.zip","w") #在d盘创建一个名为a的zip文件
#z1.write("1.txt") #写那些文件需要压缩
#z1.write("1_copy.txt")
#z1.close()
z2=zipfile.ZipFile("d:/a.zip","r") # r默认值为'r',表示读已经存在的zip文件,也可以为'w'或'a','w'表示新建一个zip文档或覆盖一个已经存在的zip文档,'a'表示将数据附加到一个现存的zip文档中
z2.extractall("电影") #解压缩到当前的电影目录下
z2.close()
#coding=utf-8
#递归计算n阶乘
def factorial(n):
if n==1:
return n
else:
return n*factorial(n-1)
print(factorial(5))
#coding=utf-8
#递归打印所有的目录和文件
import os
allfiles=[]
def getAllFiles(path,level): #level 的作用是做标记,方便排列出来是几级目录
childFiles=os.listdir(path) #返回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("test_os",0)
for f in reversed(allfiles):
print(f)