如何使用Python获取某个路径下面所有文件的绝对路径以及其他操作

问题背景:

    最近在用Python脚本处理文件夹下面的文件名的搜索和重命名。其中碰到如何递归遍历文件夹下面所有的文件,找到需要的文件,并且重命名的问题。其实如果看看Python的document,还是比较简单的,这里直接给出使用方法,免得大家还要花精力去查找。


环境:

    文件夹结构:

    ----path1

         ----path1-1

              ----path1-1.1.txt

        ----path1-2

        ----path1.1.txt

    ----path2

    ----recursiveDir.py

文件夹结构如上所示。


代码分析(recursiveDir.py):

<span style="font-size:18px;">import os

'''
本脚本用来演示如何遍历py脚本所在文件夹下面所有的文件(包括子文件夹以及其中包含的文件)。
重点演示如何获取每个文件的绝对路径。注意os.path.join(dirpath, filename)的用法。
'''

rootdir = os.getcwd()
print('rootdir = ' + rootdir)

for (dirpath, dirnames, filenames) in os.walk(rootdir):
    #print('dirpath = ' + dirpath)
    for dirname in dirnames:
        print('dirname = ' + dirname)
    for filename in filenames:
        #下面的打印结果类似为:D:\pythonDirDemo\path1\path1-1\path1-1.1.txt
        print(os.path.join(dirpath, filename))
        if(filename=='path1-1.1.txt'):
            os.chdir(dirpath)
            #os.rename(os.path.join(dirpath, filename), dirpath + os.sep + 'path1-1.1.new.txt')
            os.rename('path1-1.1.txt', 'path1-1.1.new.txt')
            #os.remove(os.path.join(dirpath, filename))
        #下面的输出为fileName = path1-1.1.txt,并未包含绝对路径,所以需要使用os.path.join来链接,获取绝对路径
        print('fileName = ' + filename)
    print('------------------one circle end-------------------')</span>

所以可以看到程序中使用os.path.join(dirpath, filename)来拼接出绝对路径出来。注意下面的重命名用法,可以将工作目录切换到os.chdir(dirpath),这样就可以直接用os.rename(oldfile, newfile).Python会自动到dirpath下面查找oldfile并且重命名为newfile。注意工作目录的含义:在Python的GUI中,使用os.getcwd()可以获取到当前工作目录。测试如下:

<span style="font-size:18px;">>>> os.chdir('D:')
>>> os.getcwd()
'D:\\pythonDirDemo\\path1\\path1-1'
>>> os.chdir('D:\\')
>>> os.getcwd()
'D:\\'</span>

可见却是可以用chdir改变工作目录。这个代码只是在重命名的时候用到的小技巧而已,大家知道有这个东西就行了,不过调用chdir之后,后续再获取getcwd()就会被影响,所以警惕。


总结:

最重要的是参考os.path.join的用法。具体链接见Python的在线文档。顺便也可以看看os.walk的用法。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值