[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] python遍历文件遇到的问题

def getFiles(dir, suffix): # 查找根目录,文件后缀
    res = []
    for root, directory, files in os.walk(dir):  # =>当前根,根下目录,目录下的文件
            for filename in files:
                    name, suf = os.path.splitext(filename) # =>文件名,文件后缀
                    if suf == suffix:
                            res.append(os.path.join(root, filename)) # =>吧一串字符串组合成路径
    return res


for file_path in getFiles("./", '.png'):  # =>查找以.png结尾的文件
#        img1=Image.open(file_path)
        print(file_path)

当前路径有很多png文件,同时有个子目录101-1,里面也有很多png文件。
我的这段代码会把当前目录下的png和子文件夹的101-1全部列出来的。
如何修改代码,我只要列出当前路径下的png文件,谢谢!

本帖最后由 Gin_Q 于 2020-5-26 23:16 编辑

我正好也需要,拿去自己改改!
  1. #!/usr/bin/env python3
  2. #coding=utf-8
  3. import os
  4. import time
  5. import shutil
  6. #禁止访问目录列表
  7. stop = ['837761056','1289832516','1551961057']
  8. #指定复制文件列表
  9. filetype = ['.mp4','.avi']
  10. #复制或移动目标目录
  11. dstdirs = r'd:\\'
  12. for root,dirname,filename in os.walk(os.getcwd()):
  13.     print('当前目录为:',root)
  14.     #print('当前目录文件夹有:',dirname)
  15.     #print('当前文件有:',filename)
  16.     #获取当前目录文件不递归
  17.     #dirname.clear()
  18.     #排除指定目录
  19.     for i in stop:  
  20.         if i in dirname:
  21.             dirname.remove(i)
  22.    
  23.     for i in (os.path.join(root,name) for name in filename):
  24.         #print('完整文件路径: ',i,(os.path.getctime(i)))
  25.         for ft in filetype:
  26.             if ft in i:
  27.                 print('正在复制:\n',i,'--->>>',dstdirs)
  28.                 #复制
  29.                 shutil.copy(i,dstdirs)
  30.                 #print('正在移动:\n',i,'--->>>',dstdirs)
  31.                 #移动
  32.                 #shutil.move(i,dstdirs)
  33.    
  34. print('Done!')
  35. os.popen('pause')
复制代码

TOP

  1. directory.clear()
复制代码

TOP

os.listdir(path='.') 替换 os.walk()
https://docs.python.org/3.8/library/os.html#os.listdir
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

返回列表