#文本文件的写入三步走
#1.创建文件对象
#2.写入数据
#3.关闭文件对象
f=open("a.txt","a")##"a"代表模式,如果我们没有增加模式b,则默认创建的对象时文本文件对象
s="尚学堂\n百战程序员\n"
f.write(s)
f.close()##注意 一定要有关闭这个动作
英文的可以直接执行,中文的小部分下面会单独讲解关于中文乱码的解决办法
常用编码之间的关系:
编码和简码要保持一致
f=open(r"b.txt","w")#编码默认GBK,但是打开的时候时UTF8,所以打开的时候乱码了
f.write("尚学堂\n百战程序员\n")##\n是换行符的意思
f.close()##注意 一定要有关闭这个动作
中文的乱码解决时,把它改为GBK格式 进行统一
close()关闭文件流
ry :
f=open(r"b.txt","w")
strs=("aa\n","bbb\n")#引用的多个字符串,所以str变成strs
f.writelines(strs)
except BaseException as e:
print(e)
finally:
f.close()##注意 一定要有关闭这个动作
推导式生成列表:
希望给文件中的三行内容添加行号。如何给列表中的内容实现修改呢?
一个新的函数来解决这个问题,enumerate(),作用:枚举对象
在这里可以看到enumerate()的对象。
所以,最终代码如下:
将刚才的temp换成了line.
二进制文件的读取和写入
aa.gif 是一个图片,读取这个图片的内容,实现文件的拷贝
引入CSV 模块 import csv
reader 读取器 ;writer 写入器
b_csv.writerows() rows 是对于多行列表的写入,row 是一行一行的输入
dir 是目录
注意一下,print(os.sep),在windows 系统下是反斜杠,在另外两个系统下是/ 正斜杠。
补充上述stat 函数
创建多级目录
补充:
创建目录
在Python中可以使用os.mkdir()函数创建目录(创建一级目录)。
其原型如下所示:
os.mkdir(path)
其参数path 为要创建目录的路径。
例如要在D盘下创建hello的目录
>>> import os
>>> os.mkdir(‘d:\hello’)
可以使用os.makedirs()函数创建多级目录。
其原型如下所示:
os.makedirs(path)
其参数path 为要创建目录的路径。
如在D盘下创建books的目录,books目录下在创建book目录
>>> import os
>>>os.makedirs(‘d:\books\book’)
删除目录
在Python中可以使用os.rmdir()函数删除目录。
其原型如下所示:
os.rmdir(path)
其参数path 为要删除的目录的路径。
例如把D盘下的hmm的目录删除
>>> import os
>>> os.rmdir(‘d:\hmm’)
删除多级目录
在Python中可以使用os.removedirs()函数删除多级目录。
其原型如下所示:
os.removdirs(path)
其参数path 为要删除的多级目录的路径。
>>> import os
>>> os.removedirs(‘d:\books\book’)
#注意:要删除的目录必须是空目录
…\ 的用法
os.path 模块
os、os.path模块中关于文件、目录常用的函数使用方法
#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"))#判断指定路径是否存在且是一个目录 false
print (os.path.isfile("d:/a.txt"))# 判断指定路径是否存在且是一个文件 true
print (os.path.exists("d:/a.txt"))# 判断指定路径(目录或文件)是否存在 true
拓展一些获得文件基本信息相关函数的用法:具体函数名和意义见链接
#coding=utf-8
#列出工作目录下的所有Py 文件,并输出文件名
import os
path=os.getcwd() ##getcwd()返回当前工作目录
file_list=os.listdir(path)#列出子目录,子文件
for filename in file_list: #对所有的子文件进行遍历
print (filename) # 输出文件名
endswith()函数
描述:判断字符串是否以指定字符或子字符串结尾。
import os
path=os.getcwd()
file_list=os.listdir(path)#列出子目录,子文件
for filename in file_list: #对所有的子文件进行遍历
if filename.endswith("py"): #判断字符串是否以指定字符或子字符串结尾,此处时判断是否以py结尾
print (filename) # 输出文件名
os.walk()–递归遍历所有文件
遍历所有文件夹 和文件之后
import os
path=os.getcwd()
list_files=os.walk(path)
for diepath,dirnames,filenames in list_files:
for dir in dirnames: #只遍历文件夹
print(dir)
for file in filenames: #只遍历文件
print(file)
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)
对于os模块的补充学习:shutil()函数
Python模块之shutil模块
zipfile() —>压缩
w 写模式,r 都模式
extractall() 解压缩
递归算法;
#使用递归计算n的阶乘,一般来说递归可以处理的也能用循环来处理
def factorial(n):#定义一个阶乘 变量为n 阶乘都是从大数开始乘,直到最后是1结束
if n == 1: ##比较结构中,赋值要用==
return n
else:
return n*factorial(n-1)
print(factorial(5))#计算5!