python 文件处理(一):对文件路径的操作 【getcwd、chdir、listdir、join、exists、mkdir、isdir、move、getsize、splitext】

目录

         导语

绝对路径与相对路径

os.getcwd()

os.chdir(target_path)

特定路径下文件名称的获取

os.listdir(path)

两个路径的拼接

os.path.join(path1,path2)

判断路径是否存在

os.path.exists(path) 

创建文件路径

os.mkdir(path) 

判断路径是否为文件夹

os.path.isdir(path)

文件移动(剪切与复制)【no复制黏贴!,太low啦】

 shutil.move(原目录,目标目录)

shutil.copy(filepath,targetpath)

获取文件大小

os.path.getsize(file_path)

对文件名的拆分

 os.path.splitext()



         导语

        本人python是自学的,这些博客主要是自己做知识整理等用处。如果它对你有帮助我非常高兴,也希望大家能够留下宝贵的意见与建议。【这块内容我是从某个网上课程学的,所以整个讲述框架会有类似,侵权删】     

OK 那么接下来就是关于python文件处理的第一部分啦!!

绝对路径与相对路径

        首先,我们要了解文件路径有两种形式,绝对路径和相对路径。绝对路径就是我们常用的路径,比如 ‘D:\花园宝宝\玛卡巴卡.jpg’, 这个就是玛卡巴卡.jpg这个文件的绝对路径。

        那么相对路径时什么呢?要搞清这个先要搞清另一个概念——工作路径。工作路径就是程序在运行的地方,可以简单理解为保存代码的文件夹。比如.py文件的路径是‘D:\python code\test.py’,那么工作路径就是‘D:\python code’。 理解了什么是工作路径之后,相对路径就好理解了。相对路径就是指直接以文件或文件夹的名称开头,相对于工作路径的位置。

        举个栗子,绝对路径是‘D:\花园宝宝\玛卡巴卡.jpg’,

                          工作路径是'D:\花园宝宝'

                          那么‘’玛卡巴卡.jpg‘’就是相对路径。

        再举个栗子,绝对路径是‘D:\动画片\花园宝宝\玛卡巴卡.jpg’

                          工作路径是‘D:\动画片’

                          那么‘花园宝宝\玛卡巴卡.jpg’就是相对路径

下面介绍几个相关的函数

os.getcwd()

(get current working directory获得当前工作路径)

os.chdir(target_path)

(change directory改变工作路径)

import os

print(os.getcwd())

#输出 d:\Python Code

os.chdir(target_path) #把工作路径修改到target_path

特定路径下文件名称的获取

os.listdir(path)

        我们想要处理文件的话,最重要也是最初的一步就是找到文件的路径,并使用python读入该路径下的文件。此处用到  os.listdir(path) 。 os是python 的一个包,使用前要import一下。

需要注意的是,Windows和Mac的文件路径的格式有所不同

                windows使用 C:\yjy\Desktop

                mac使用 /Users/yjy/Desktop

这是listdir的一个例子:文件路径中包含着单个文档,压缩包,文件夹。

import os
p=os.listdir('D:\计算机网络')
print(p)

        输出如下,可以看到,listdir仅仅获取的是当前目录的所有文件(夹),不会再进一步把后面文件夹的内容也获取出来。

  

         

两个路径的拼接

os.path.join(path1,path2)

运行结果:path1+path2       直接上栗子:

import os
path = 'D:\计算机网络'
path_new = os.path.join(path,'slides')
p = os.listdir(path_new)
print(path_new)
print(p)

运行结果:

判断路径是否存在

那么在获取文件名之前,我们如何知道此目录是否存在呢?

os.path.exists(path) 

(bool类型,该路径对应的文件夹存在时,返回true)   直接上栗子:

import os
path = 'D:\计算机网络'
path_new = os.path.join(path,'slides')
path_f = 'D:\阿巴阿巴'
print(os.path.exists(path_new))
print(os.path.exists(path_f))

运行结果:

创建文件路径

os.mkdir(path) 

(在路径下创建一个新文件夹)

刚刚我们可以验证某个路径是否存在,那么假如我们需要的路径原本并不存在怎么办呢?(哦?右键新建文件夹?巧了嘛,我也会。)继续上栗子:

import os
path = 'D:\计算机网络'
path_f = 'D:\阿巴阿巴'
print('before mkdir')
print(os.path.exists(path_f))
os.mkdir(path_f)
print('after mkdir')
print(os.path.exists(path_f))

输出结果,可以看到创建路径成功了,如果你打开D盘查看的话就会看到一个叫“阿巴阿巴”的文件夹:

【注意】:mkdir不可以一次创建多级的文件路径,大白话说就是,得一个一个文件夹建。比如,我要创建D:\阿巴阿巴\玛卡巴卡 这个路径,初始状态下只有D盘,没有阿巴阿巴文件夹,那么玛卡巴卡这个文件夹其实对于D盘就是第二级的文件夹了。mkdir('D:\阿巴阿巴\玛卡巴卡')直接创建是不行的哦,必须先mkdir('D:\阿巴阿巴')然后再在阿巴阿巴文件夹的基础上创建玛卡巴卡文件夹。

判断路径是否为文件夹

os.path.isdir(path)

(bool类型,判断路径对应的文件是否为文件夹)

这个函数我暂时还没用到过,总之他就是判断一下你给的路径它究竟是不是个文件夹的路径,比如说你给的路径已经精确到具体的文件了, 那输出就是false。

这是颗栗子:

import os
path = 'D:\计算机网络'
path_new = os.path.join(path,'教材.pdf')
print(os.path.isdir(path_new))

运行结果:

文件移动(剪切与复制)【no复制黏贴!,太low啦】

 shutil.move(原目录,目标目录)

(将原目录的文件移动到目标目录文件夹中,效果类似于剪切,注意此处要引入另一个模块shutil)

栗子栗子:

import os
import shutil
path = 'D:\计算机网络'
path_book = os.path.join(path,'教材.pdf')
target_path = 'D:\计算机网络\slides'
shutil.move(path_book,target_path)#把教材.pdf移动到sildes文件夹中

运行结果:

        当然,这个函数也可以用来更改文件名,比如我想要将  ‘教材.pdf’  改名为  ‘计算机网络教材.pdf’,那么原路径不变,目标路径改为 'D:\计算机网络\计算机网络教材.pdf' ,然后使用shutil.move()函数即可。

import os
import shutil

file = '教材.pdf'
path = 'D:\计算机网络'
filepath = os.path.join(path,file)
targetpath = path + '\计算机网络教材.pdf'
shutil.move(filepath, targetpath)

shutil.copy(filepath,targetpath)

(将filepath的文件复制到targetpath中)  

这里就不给栗子啦,大家可以自己试一试,区别于shutil.move(),这个函数效果类似复制黏贴,原路径下的文件依旧是存在的。 

获取文件大小

os.path.getsize(file_path)

(获取文件大小)

import os

print(os.path.getsize('D:\计算机网络\计算机网络教材.pdf'))

#输出为77999668

注意输出结果是以字节为单位的,所以要做的那位换算。

1字节—>*1024—>K—>*1024—>M—>*1024—>G

我这里输出的结果是77999668,所以大小为77999668字节,转换为常用的M,除1024^2,大约为74M。

对文件名的拆分

 os.path.splitext()

(用于分离文件名,将文件名作为参数传入该函数,返回为一个元组)

注:分离后缀os.path.splitext(item)[1],分离前缀os.path.splitext(item)[0]

再来个栗子:

import os
path = 'D:\计算机网络'
path_book = os.path.join(path,'教材.pdf')
print(os.path.splitext(path_book))
print(os.path.splitext(path_book)[0])
print(os.path.splitext(path_book)[1])

运行结果:

要注意的是,文件路径在这里本质上都是以字符串的形式出现,所以我们可以通过一些字符串相关的操作对文件路径、名字等进行一些操作。比如split,直接 文件名.split() 就OK了。具体用splitext还是split看具体情况喽。今晚的最后一颗栗子:

file = '教材.pdf'
bookname = file.split('.')[0]
print(bookname)

输出结果:

好啦,今天就写到这里啦。基本上这些就是对文件路径的一些基本操作,有新的内容会补充,我们下一节见,bye~

  • 9
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三头猪等于一头大猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值