文件复制及os模块,dirname,name,join,相对路径,绝对路径,getsize,getcwd,listdir等

文件复制

文件复制是这样的一个操作过程,用到一次读一次写,写的过程嵌套在第一次读的里面。注意只有文件才能open读写,文件夹不能open会报PermissionError。

文件复制及os模块,dirname,name,join,相对路径,绝对路径,getsize,getcwd,listdir等

#文件复制操作,先读源文件然后写到目的文件
#写操作
with open(r'C:\Users\XY\Desktop\个税.png','rb') as stream:
    container=stream.read() #容器接收读流读到的文件
    with open(r'D:\daima\个税.png','wb') as wstream:
        wstream.write(container) #写流写读的文件

文件复制及os模块,dirname,name,join,相对路径,绝对路径,getsize,getcwd,listdir等文件复制及os模块,dirname,name,join,相对路径,绝对路径,getsize,getcwd,listdir等

可以看到此时桌面的文件已经复制出现到D盘daima文件夹下了。

 

os模块(dirname,name,rfind,os.path.join)

那如果我们要复制文件夹怎么办呢,这时候我们要引入os模块(os模块中包含很多操作文件的东西)

import os

path=os.path.dirname(__file__) #当前文件的文件夹目录名字(绝对路径str型)
print(path)


path=path.join(iterbale)   #path.join 是字符串或列表的拼接

path1=os.path.join(path, paths)   #路径的拼接,文件夹目录的名字+文件名字


#用于复制文件操作

#用于复制文件操作
import os
with open(r'C:\Users\XY\Desktop\个税.png','rb') as stream:
    container=stream.read()
    name=stream.name   #C:\Users\XY\Desktop\个税.png
    name1=name[-6:]    
'''
 还有一种方法 name1=name[name.rfind('\\')+1 : ] 意思是从右查询'\'的位置 因为斜杠会被识别转义字符,所以我们不用r 而用两个斜杠'\\'
'''    
    print(name1)       #个税.png
    path=os.path.dirname('__file__')
    path1=os.path.join(path,name1)  #join后允许拼接多个
    with open(path1,'wb') as wstream:
        wstream.write(container)

文件复制及os模块,dirname,name,join,相对路径,绝对路径,getsize,getcwd,listdir等

要获取文件名不单可以用rfind,还可用os模块中的os.path.split(path)

#获取文件名字
import os 
name=os.path.split(r'C:\Users\XY\Desktop\个税.png') 
#分割生成一个元组,第一个元素为目录,第二元素为文件名
print(name[1])

而os.path.splitext(path)可以把文件的后缀名分隔开。

 

相对路径,绝对路径

os.path.isabs():判断是否为绝对路径

os.path.abspath():获取绝对路径

 

相对路径:相对路径是有参照点的,比如参照现在正在编辑的文件来找文件,即为相对路径

相对路径中同级别的文件、目录可直接调用,要返回上一级去寻找上一级的同级目录下的文件可用‘../’来调用。

嵌套目录,比如有两层,可以用'../../'来返回

要通过相对路径获取绝对路径:

#要通过相对路径获得绝对路径
import os
p=os.path.abspath('lambda_map_reduce.py') #括号中是相对路径,因为与编写代码同级
print(p)  #输出为绝对路径

 

D:\daima\lambda_map_reduce.py

获取当前文件的绝对路径:

#获取当前文件的绝对路径
p1=os.path.abspath(__file__)
print(p1)

要获取当前文件的工作目录:

#要获取当前文件的工作目录:
p2=os.getcwd()
print(p2)

 

获取文件大小

#获取文件大小
size=os.path.getsize('..')
print(size)

28672 单位(字节)

 

 

获取指定目录下的所有文件列表

#返回指定目录下的文件列表
listd=os.listdir(r'D:/daima')
print(listd)

 

创建一个文件夹ppp:

#创建一个文件夹
ppp=os.mkdir(r'D:/ppp')
print(ppp)   #None

文件复制及os模块,dirname,name,join,相对路径,绝对路径,getsize,getcwd,listdir等



删除文件及文件夹:

#删除空文件夹
os.rmdir(r'D:/ppp')
#删除多个文件夹或嵌套文件夹:
os.removedirs(name)
#删除文件
os.remove(path)

#完整删除过程
#删除文件夹中多个文件并删除文件夹
listd=os.listdir(path)
for file in listd:
    path1=os.path.join(path,file)
    os.remove(path1)
else:                              #循环执行完后执行else
    os.rmdir(path)

 

切换目录:

os.chdir()

 

 

上一篇:Python批量修改文件名


下一篇:如何优雅的使用 Python 实现文件递归遍历