python的OS库测试

01 

import os

path = os.path.dirname(__file__) #获取当前文件所在再目录
print(path)#F:\开发工具\pythonProject\basepython\day02
#拼接文件路径
path1 = os.path.join(path,'os01.py')
print(path1)#F:\开发工具\pythonProject\basepython\day02\os01.py

#路径中得到文件名字
file = 'F:\开发工具\pythonProject\basepython\day02\os01.py'

#截取文件名字
file1 = file[file.rfind('\\')+1:]#找到最后一个\,必须双斜杠,然后加一的位置往后截取
print(file1)

#absolute绝对路径
#isabs(path) 测试是否是一个绝对路径
#路径前面加r的意思是
r = os.path.isabs(r'F:\开发工具\pythonProject\basepython\day02\os01.py')
print('------->',r)
#相对路径’../day02/os01.py‘;../表示当前文件的上一级,表示day01的同一级day02
r = os.path.isabs(r'../day02/os01.py')

#表示跟多层装饰器.py同级的day02的os01.py
r = os.path.isabs(r'day02/os01.py')

#获取当前文件所在文件夹路径os.py,directory文件目录,dir开头就是文件夹名字
ss = os.path.dirname(__file__)
print('----------',ss)

#abspath
#给一个相对路径名字,返回一个绝对路径名
sf = os.path.abspath(__file__)
sf = os.path.abspath('os01.py')

总结:

#获取当前文件所在再目录
path = os.path.dirname(__file__)
#拼接文件路径
path1 = os.path.join(path,'os01.py')
#截取文件名字
file1 = file[file.rfind('\\')+1:]#找到最后一个\,必须双斜杠,然后加一的位置往后截取
#isabs(path) 测试是否是一个绝对路径
r = os.path.isabs(r'F:\开发工具\pythonProject\basepython\day02\os01.py')
#给一个相对路径名字,返回一个绝对路径名
sf = os.path.abspath(__file__)
sf = os.path.abspath('os01.py')

 02

import os

# #路径中得到文件名字
file = r'F:\开发工具\pythonProject\basepython\day02\os01.py'
# #截取文件名字
# file1 = file[file.rfind('\\')+1:]#找到最后一个\,必须双斜杠,然后加一的位置往后截取

#另一种方式(以最后一个/切割 文件)
file1 = os.path.split(file)
#f就是文件名字
f = file1[1]

#找到的是扩展名字,fg[1]就是.py
fg = os.path.splitext(file)

#返回文件的大小,单位是字节
size = os.path.getsize(file)

#路径拼接F:\开发工具\pythonProject\basepython\day02\huitao\osos.py,允许传入多个参数
nw = os.path.join(os.getcwd(),'huitao','osos.py')
print('--------',nw)

#os的函数使用
#获取目录dir
dir = os.getcwd()

#判断当前目录下是否存在这个文件
if not os.path.exists(file):
    pass
#返回目录下所有文件和文件夹名称dirs,['os01.py', 'os02.py']
dirs = os.listdir(r'F:\开发工具\pythonProject\basepython\day02')
print('........',dirs)

#创建文件夹,会在当前路径下创建文件夹
# bs = os.mkdir(r'ss.text')

#删除文件夹,会删除当前目录下的文件夹
bd = os.rmdir(r'ss.text')
print('........',bd)


#删除文件夹,删除当前文件路径下的文件夹
hu = os.removedirs(r'')

#删除文件,删除当前文件路径下文件
hj = os.remove(r'F:\开发工具\pythonProject\basepython\day02\huitao.text')


#程序循环删除代码,c:/pp路径下文都读出来,一个一个删除掉,当删除完文件时,删除文件夹

# pathh = os.listdir('c:/pp')
# for fil in pathh:
#     ds = os.path.join('c:/pp',fil)
#     os.remove(ds)
# else:
#     os.rmdir('c:/pp')

#切换目录,然后查看路径
pi = os.chdir('c:/gus/11.txt')
#获取到切换后的目录
kpath = os.getcwd()
print('--------',kpath)

总结:

#另一种方式(以最后一个/切割 文件)
file1 = os.path.split(file)
#f就是文件名字
f = file1[1]
#找到的是扩展名字,fg[1]就是.py
fg = os.path.splitext(file)
#返回文件的大小,单位是字节
size = os.path.getsize(file)
#获取目录dir
dir = os.getcwd()
#路径拼接(后面可以增加多个参数)
nw = os.path.join(os.getcwd(),'huitao','osos.py')
#返回目录下所有文件和文件夹名称dirs,['os01.py', 'os02.py']
dirs = os.listdir(r'F:\开发工具\pythonProject\basepython\day02')
#创建文件夹,会在当前路径下创建文件夹
bs = os.mkdir(r'ss.text')
#删除文件夹,会删除当前目录下的文件夹
bd = os.rmdir(r'ss.text')
#删除文件夹,删除当前文件路径下的文件夹
hu = os.removedirs(r'')

#删除文件,删除当前文件路径下文件
hj = os.remove(r'F:\开发工具\pythonProject\basepython\day02\huitao.text')
#切换目录,然后查看路径
pi = os.chdir('c:/gus/11.txt')
#获取到切换后的目录
kpath = os.getcwd()

利用上面api实现文件及文件夹的复制功能

03(文件及文件夹的复制)

import os

#文件的读写
#读 rb r(rb是多种文件,r是单个文件)
#写wb r
#复制文件和文件夹

path1 = 'c:/kus'
path2 = 'c:/jiji/sd'

def copyt(src_path,target):
    #获取文件夹内容
    filelist = os.listdir(path1)
    #遍历列表
    for file in filelist:
        #拼接路径
        path = os.path.join(path1,file)
        #判断是文件夹还是文件
        if os.path.isdir(path):
            #如果是文件夹
            #先创建一个文件夹,把wrr作为一个目标文件夹
            wrr = os.path.join(target, file)
            os.mkdir(wrr)
            copyt(path,wrr)

        #如果是文件直接复制
        else:
            with open(path, 'rb') as rstrem:
                container = rstrem.read()
                path3 = os.path.join(path2, file)
                with open(path3, 'wb') as wstrem:
                    wstrem.write(container)

 注释:

r = os.path.isabs(r'F:\开发工具\pythonProject\basepython\day02\os01.py')

路径前面r啥意思:r 的作用和\\的作用一样,都是为了防止程序将\当作是转义字符,所以r\\在写的时候使用一种方法就可以,当然如果路径是/,那么就不需要涉及这些了。

#r代表不转义,如果不加r那么""中就要加双反斜杠。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值