1.1 文件目录和路径
文件的两个属性,路径和文件名
Python中的文件路径和目录的相关包主要是os,主要的API有
l os.path.join(dir, filename) 用于将字符串拼凑产生当前系统下的路径,
os.path.join('Datawhale','docu') #'Datawhale\\docu'
l os.getcwd() 获取当前的工作目录
l os.chdir(path) 将当天的工作目录切换到指定的path,
os.chdir('D:\\Datawhale\\python办公自动化')
l os.path.abspath(path):将相对路径转换为绝对路径,将返回参数的绝对路径的字符串
l os.path.isabs(path):判断是否是绝对路径,是返回True,不是则返回False
l os.path.relpath(path,start):返回从start路径到path的相对路径的字符串。如果没提供start,就使用当前工作目录作为开始路径。
os.path.relpath('D:\\Datawhale\\python办公自动化','D:\\')
\#'Datawhale\\python办公自动化'
l os.path.dirname(path): 返回当前路径的目录名称。
l os.path.basename(path):返回当前路径的文件名称。
path = 'D:\\Datawhale\\python办公自动化\\python课程画图.pptx'
os.path.dirname(path) #'D:\\Datawhale\\python办公自动化'
os.path.basename(path) #'python课程画图.pptx'
l os.path.split(): 将路径拆分为目录名称和文件名称,返回两者组成的一个元组
caFilePath = 'D:\\Datawhale\\python办公自动化\\python课程画图.pptx'
os.path.split(caFilePath) #('D:\\Datawhale\\python办公自动化', 'python课程画图.pptx')
l os.path.sep代表当前系统中的路径分隔符,例如在windows中就代表’\’
l os.path.exists(path):如果path参数所指的文件或文件夹存在,则返回True,否则返回False。
l os.path.isfile(path):如果path参数存在,并且是一个文件,则返回True,否则返回False。
l os.path.isdir(path):如果path参数存在,并且是一个文件夹,则返回True,否则返回False。
l os.makedirs():#创建目录,若文件夹已存在,不会覆盖,会报错
l os.path.getsize(filepath):返回filepath参数中文件的字节数(注意filepath需要直接指向文件而不是文件夹,如果输入的参数路径path是文件夹,并不会返回文件夹中所有文件的总大小)
l os.listdir(dirpath): 返回dirpath参数中的每个文件
l os.unlink(path): 删除path处的文件。
l os.rmdir(path): 删除path处的文件夹。该文件夹必须为空,其中没有任何文件和文件夹。
l os.walk(path):传入一个文件夹的路径,在for循环语句中使用os.walk()函数,遍历目录树。os.walk()在循环的每次迭代中,返回三个值:
1)、当前文件夹称的字符串。
2)、当前文件夹中子文件夹的字符串的列表。
3)、当前文件夹中文件的字符串的列表。
for folderName, subFolders, fileNames in os.walk(path)
1.2 文件读写
文件读写的三个步骤
1)open() 函数创建file对象
open()函数有不同的打开模式,例如’r’, ‘w’, ‘a’, ‘rb’, ‘wb’
2) read() 或者 write() 方法进行读写
read():读取文件内容。
readlines():按行读取文件中的内容,取得一个字符串列表,列表中每个字符串是文本中的一行且以\n结束。
write():写入文件内容
writelines([str]):用于向文件中写入一序列的字符串。
3) close():函数关闭file对象
1.3 变量保存
1)shelve模块
shelve是一个简单的数据存储方案,类似key-value数据库,可以很方便的保存python对象,其内部是通过pickle协议来实现数据序列化。shelve模块只有一个open()函数,格式为shelve.open(filename, flag)
filename:文件名;
flag:打开数据存储文件的格式;
‘r’ 以只读模式打开一个已经存在的数据存储文件
‘w’ 以读写模式打开一个已经存在的数据存储文件
‘c’ 以读写模式打开一个数据存储文件,如果不存在则创建
‘n’ 总是创建一个新的、空数据存储文件,并以读写模式打开
2) pprint.pformat()
pprint.pformat()函数返回要打印的内容的文本字符串,这个字符串既易于阅读,也是语法上正确的Python代码。
import pprint
cats = [{'name':'Zophie','desc':'chubby'},{'name':'Pooka','desc':'fluffy'}]
print(pprint.pformat(cats))
\# [{'desc': 'chubby', 'name': 'Zophie'}, {'desc': 'fluffy', 'name': 'Pooka'}]
1.4 组织文件
1)shutil模块
可以在Python程序中复制、移动、改名和删除文件
l shutil.copy(source, destination):将路径source处的文件复制到路径destination处的文件夹(source 和 destination 都是字符串),并返回新复制文件绝对路径字符串。
l shutil.copytree(source, destination):将路径source处的文件夹,包括其包含的文件夹和文件,复制到路径destination处的文件夹,并返回新复制文件夹绝对路径字符串。
l shutil.move(source, destination):将路径 source 处的文件/文件夹移动到路径destination,并返回新位置的绝对路径的字符串。
l shutil.rmtree(path):删除 path 处的文件夹,它包含的所有文件和文件夹都会被删除。注意该种删除方法不可恢复删除文件和文件夹
l send2trash.send2trash(path) :将文件或文件夹发送到计算机的垃圾箱或回收站,而不是永久删除
2) zipfile****模块
创建和解压zip文件
l zipfile.ZipFile(‘filename.zip’, ‘w’):以写模式创建一个压缩文件
l write(‘filename’,‘compress_type=zipfile.ZIP_DEFLATED’):如果向write()方法中传入一个路径,Python 就会压缩该路径所指的文件, 将它加到 ZIP 文件中。 如果向write()方法中传入一个字符串,代表要添加的文件名。第二个参数是“压缩类型”参数,告诉计算机用怎样的算法来压缩文件。可以总是将这个值设置为 zipfile.ZIP_DEFLATED(这指定了 deflate 压缩算法,它对各种类型的数据都很有效)。
import zipfile
newZip = zipfile.ZipFile('new.zip','w')
newZip.write('Miki.txt', compress_type=zipfile.ZIP_DEFLATED)
newZip.close()
l namelist():返回zip文件中包含的所有文件和文件夹的字符串列表。
l getinfo():返回一个关于特定文件的ZipInfo对象。ZipInfo对象的两个属性:file_size和compress_size,分别表示原来文件大小和压缩后文件大小。
l extractall():从zip文件中解压缩所有文件和文件夹,放到当前工作目录中。也可以向extractall()传递的一个文件夹名称,它将文件解压缩到那个文件夹, 而不是当前工作目录。如果传递的文件夹名称不存在,就会被创建。
l extract():从zip文件中解压单个文件。也可以向 extract()传递第二个参数, 将文件解压缩到指定的文件夹, 而不是当前工作目录。如果第二个参数指定的文件夹不存在, Python 就会创建它。extract()的返回值是被压缩后文件的绝对路径。