Python——文件路径操作,获取文件夹下的所有文件路径

            Hello!各位小伙伴大家好。今天我们来学习用Python获取文件夹下的所有文件路径。在Python编程过程中,我们常常有这样的需求,需要获取某一个文件目录下的所有文件,或获取文件目录下的所有指定后缀名的文件。对于上述问题,下面简单的总结了这些方法,供大家学习参考与交流:

本实例的文件夹放置在桌面,路径为:C:\Users\Smile\Desktop\周汇报,该文件夹下有个子文件夹,子文件夹有一个pdf文件。
  

1、获取文件夹下的所有文件路径

我在这里使用os模块下的listdir方法,该方法可以获取该文件夹下的所有文件名称(包含子文件夹名称),之后配合os.path.join方法来获取该文件夹下的所有文件路径。
import os
dir_path = r'C:\Users\Smile\Desktop\周汇报'
file_ls = os.listdir(dir_path)  #获取所有文件名称
file_ls
运行结果如下:
 

我们可以发现,结果不仅包括了文件名,还包括了子文件夹名。

获取完整路径,在上面基础上使用1行代码即可:

 file_ls = [os.path.join(dir_path, file) for file in file_ls]
file_ls

如上图可以发现获取了指定文件夹下的所有文件路径,还包括了子文件夹路径。如果我们想要连带获取子文件夹下的文件名该如何操作呢?

那么我们可以用os.walk方法进行。它返回3个参数——根目录、根目录下的所有文件、根目录下的子文件夹。

path = r'C:\Users\Smile\Desktop\周汇报'
for root, dirs, files in os.walk(path):
    print(root)
运行的结果为:

C:\Users\Smile\Desktop\周汇报
C:\Users\Smile\Desktop\周汇报\数据

       可以发现在尝试中循环了两次,这里指定输出当前循环的根目录,第一次循环遍历了根目录下的文件,由于该根目录下存在子文件夹,所以又循环了一次以获取子文件夹下的文件,所以第二次循环输出的根目录为子文件夹的位置。

所以,我们得出结论:如果在循环外面指定一个空列表。在每一次循环时将文件名与根目录进行拼接并添加到空列表中,就可以得到根目录下所有的文件路径。

path = r'C:\Users\Smile\Desktop\周汇报'
file_ls = []
for root, dirs, files in os.walk(path):
    root_file_ls = [os.path.join(root, file) for file in files]
    file_ls.append(root_file_ls)
file_ls
 

结果中可以看到,位于子文件夹下的文件也被添加到文件路径列表了。

2、获取后缀名

我们可以使用os.path.splitext方法来分割路径,它将路径分为两个部分,一个是后缀名,另一个是除后缀名之外的部分。

file = r'C:\\Users\\Smile\\Desktop\\周汇报\\第六周总结_20221024_20221030.pptx'``houzhui = os.path.splitext(file)[1]``houzhui``   ``--结果--``'.pptx'

3、获取指定后缀名的文件

路径的本质是字符串,可以使用endswith方法来判断路径是否以某个字符结尾。现在将r’C:\Users\Smile\Desktop\周汇报’直接路径下(不含子文件夹)的所有docx文件输出。

path = r'C:\Users\Smile\Desktop\周汇报'
file_ls = []
for root, dirs, files in os.walk(path):
    root_file_ls = [os.path.join(root, file) for file in files]
    file_ls.append(root_file_ls)
#因为上面循环了两次,第二次是子文件夹的文件,所以取出第1个元素
#使用endswith判断是否以docx结尾
file_ls = [file for file in file_ls[0] if file.endswith('.docx')]
file_ls
 

可以看出已经将所有的docx文件输出。

4、修改文件名
使用os.rename(old_name, new_name)来进行。

5、删除/移动文件
删除文件使用os.remove(路径名)

移动文件需要使用shuilt库,语法如下:

 import shutil
shutil.move(old_name, new_name)

6、获取文件所在的文件夹

使用os.path.dirname(path)即可获取

path = r'C:\\Users\\Smile\\Desktop\\周汇报\\第001周总结_20220919_20220925.docx'
os.path.dirname(path)

--结果--
'C:\\\\Users\\\\Smile\\\\Desktop\\\\周汇报'
7、移除文件夹
1.如果使用os.remove(path),此时的文件夹必须是空文件夹,否则会报错。

2.如果是非空文件夹,使用shutil.rmtree(path)即可成功删除。

对于文件路径的操作主要有:文件路径获取、后缀名获取、获取指定后缀名文件、删除/移动文件、替换文件名、获取文件所在的文件夹、移除文件夹。

  好了,各位小伙伴,以上就是我们今天这节课学习的内容,请大家有问题及时在评论区留言、讨论!感谢大家的支持观看。 

 

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值