组合目录+文件
会根据系统将目录分隔符设置为/或者\\(由os.path.sep设置为正确的文件夹分割斜杠)
os.path.join('usr', 'bin', 'spam')
工作目录
当前工作目录
os.getcwd()
切换工作目录
os.chdir('C:\\Windows\\System32')
创建多层目录
os.makedirs('C:\\delicious\\walnut\\waffles')
os.path.abspath(path)返回参数的绝对路径,是将相对路径转换为绝对路径的简便方法
os.path.isabs(path),如果参数是绝对路径就返回 True
os.path.relpath(path, start)返回从start路径跳转到path的相对路径,如果没有start,就使用当前工作目录作为开始路径
>>> os.path.relpath('C:\\Windows', 'C:\\')
'Windows'
>>> os.path.relpath('C:\\Windows', 'C:\\spam\\eggs')
'..\\..\\Windows'
>>> os.getcwd()
'C:\\Python34'
os.path.dirname(path)返回包含 path 参数中最后一个斜杠之前的所有内容,也叫目录名称
os.path.basename(path)返回字符串包含path参数中最后一个斜杠之后的所有内容,也叫基本名称
>>> path = 'C:\\Windows\\System32\\calc.exe'
>>> os.path.basename(path)
'calc.exe'
>>> os.path.dirname(path)
'C:\\Windows\\System32'os.path.split()获得包含目录名称+基本名称的元组
os.path.getsize(path)返回path参数中文件的字节数
os.listdir(path)返回文件名列表,包含path参数中的每个文件
如果path参数所指的文件或文件夹存在,os.path.exists(path)返回True,否则返回False
如果path参数存在,并且是文件,os.path.isfile(path)返回True,否则返回False
如果path参数存在,并且是文件夹,os.path.isdir(path)返回True,否则返回False
读写
可以使用w,a,r,wb,ab,rb等模式
with open('xxx.xx', 'wb') as f: f.write('xxxxxxxxx')
复制
如果destination是文件夹,source文件将复制到destination中,并保持原来的文件名
如果destination是文件名结尾,它将作为被复制文件的新名字
shutil.copy(source, destination)
移动
如果destination是文件夹,source 文件将移动到destination中,并保持原来的文件名
如果destination文件夹中已存在source这个文件,destination文件夹中的同名文件将被覆盖
如果没有destination文件夹,就会将source改名为destination
shutil.move(source, destination)
删除
os.unlink(file)删除file文件(单个文件)
os.rmdir(path)删除path文件夹,该文件夹必须为空,其中没有任何文件和子文件夹(单个空文件夹)
shutil.rmtree(path)删除path文件夹,它包含的所有文件和子文件夹都会被删除
send2trash.send2trash(file)将文件夹和文件发送到计算机的垃圾箱或回收站,而不是永久删除它们
os.walk()函数被传入一个字符串值,即一个文件夹的路径。你可以在一个 for
os.walk()遍历目录树,返回 3 个值:
1.当前遍历的文件夹名称;
2.当前文件夹中子文件夹列表;
3.当前文件夹中文件列表。
压缩
# 新建压缩文件以写模式打开,写模式将擦除ZIP文件中所有原有的内容
# 第二个参数传入'a'则以添加模式打开,将文件添加到原有的 ZIP 文件中,
>>> newZip = zipfile.ZipFile('new.zip', 'w')
# write()方法第一个参数传入文件,就会压缩该文件,将它加到ZIP文件中,第二个参数是“压缩类型”,告诉计算机使用怎样的算法来压缩文件
>>> newZip.write('spam.txt', compress_type=zipfile.ZIP_DEFLATED)
>>> newZip.close()
打开压缩文件
>>> exampleZip = zipfile.ZipFile('example.zip')
# 查看压缩文件中所有文件和文件夹的列表
>>> exampleZip.namelist()
['spam.txt', 'cats/', 'cats/catnames.txt', 'cats/zophie.jpg']
# 返回指定文件的ZipInfo对象,ZipInfo对象有自己的属性
>>> spamInfo = exampleZip.getinfo('spam.txt')
# 原来文件大小
>>> spamInfo.file_size
13908
# 压缩后文件大小
>>> spamInfo.compress_size
3828
>>> 'Compressed file is %sx smaller!' % (round(spamInfo.file_size / spamInfo.compress_size, 2))
'Compressed file is 3.63x smaller!'
>>> exampleZip.close()
解压
# extractall()从ZIP文件中解压所有文件和文件夹,放到当前工作目录中
>>> exampleZip = zipfile.ZipFile('example.zip')
>>> exampleZip.extractall()
# 向extractall()传递文件夹名称,文件将解压到指定目录
>>> exampleZip.extractall('C:\\ delicious')
>>> exampleZip.close()
# extract()从ZIP文件中解压单个文件,第二个参数是解压到指定目录,如果指定文件夹不存在,会自动创建
>>> exampleZip.extract('spam.txt')
'C:\\spam.txt'
>>> exampleZip.extract('spam.txt', 'C:\\some\\new\\folders')
'C:\\some\\new\\folders\\spam.txt'
>>> exampleZip.close()