首页 > 解决方案 > 如何一次迭代或循环?

问题描述

我想知道是否有人可以告诉我我缺少什么,因为我想运行一个程序来检查目录中的文件列表,然后在删除之前打印以下内容:

  1. 创建、修改时间
  2. 名称和扩展名
  3. 尺寸

但是,我无法循环大小和创建、修改时间,而是会列出文件,但会显示目录的大小和创建、修改时间。

import os.path, time, fnmatch


# get file info including time
def get_File_Info():
    print("Last modified: %s" % time.ctime(os.path.getmtime('my file path')))
    print("Created: %s" % time.ctime(os.path.getctime('my file path')))

#get file size
def get_File_Size():
    file_size = os.stat('my file path')
    print("Size of file :", file_size.st_size, "bytes")

# Get file name and  Extension
for file_name in os.listdir('my file path'):
    if fnmatch.fnmatch(file_name, '*.*'):
        print(file_name)
        print(get_File_Info())
        print(get_File_Size())

标签: python

解决方案


这些函数需要将文件路径名作为参数。

import os, time, glob

# get file info including time
def get_File_Info(filename):
    print("Last modified: %s" % time.ctime(os.path.getmtime(filename)))
    print("Created: %s" % time.ctime(os.path.getctime(filename)))

#get file size
def get_File_Size(filename):
    file_size = os.stat(filename)
    print("Size of file :", file_size.st_size, "bytes")

# Get file name and  Extension
for file_name in glob.glob('my file path/*.*'):
    print(os.path.basename(file_name))
    get_File_Info(file_name)
    get_File_Size(file_name)

您还可以使用glob.glob()来获取与模式匹配的文件名列表,而不是os.listdir()fnmatch.fnmatch().

您也不应该打印函数的结果get_XXX,因为这些函数自己打印并且不返回任何内容。


推荐阅读