【问题标题】:Finding and printing file name of zero length files in python在python中查找和打印零长度文件的文件名
【发布时间】:2013-10-27 06:52:15
【问题描述】:

我正在学习 os 模块,我需要努力打印仅零长度文件的文件名和计数。

到目前为止,我认为最简单的方法是生成一个列表或文件元组及其大小,格式如下:

((zerotextfile1.txt, 0), (notazerotextfile.txt, 15))

然后使用 if 语句只打印长度为零的文件。

然后使用 sum 函数将列表项的数量相加得到零长度文件的计数。

到目前为止,我已经得到了一些零碎的东西 - 这是我遇到麻烦的如何将它们组合在一起。

我的一些代码(我设法编写的可行代码,不多,我知道):

import os
place = 'C:\\Users\\Me\\Documents\\Python Programs\\'
for files in os.walk(place):
    print (files)

然后有像 os.path.getsize() 这样的东西,它需要我输入一个文件名,所以我想我必须使用一个 for 循环来打印这个函数中的文件名列表,以便得到它可以工作,对吧?

任何提示或指出正确的方向将不胜感激!

【问题讨论】:

  • 零长度是什么意思?它是零大小吗?
  • 是的。我猜这就是我教授的意思。
  • 意思是这是某种家庭作业?

标签: python module operating-system


【解决方案1】:
import os
place = 'C:\\Users\\Me\\Documents\\Python Programs\\'
for root, dirs, files in os.walk(place):
    for f in files:
        file_path = os.path.join(root, f) #Full path to the file
        size = os.path.getsize(file_path) #pass the full path to getsize()
        if size == 0:
            print f, file_path

【讨论】:

  • 非常感谢!所以你可以在 for 循环中放置一个 for 循环......我必须记住那个。我会算出计数和求和部分,现在应该不会太难。
【解决方案2】:

您在寻找以下内容吗?

import os
place = 'C:\\Users\\Me\\Documents\\Python Programs\\'
for files in os.walk(place):
    if os.path.getsize(b[0] + '\\' +b[2][0]) == 0:
        print (files)

【讨论】:

  • 它没有用。是因为我已经定义了文件并说 b = files 使它无效吗?我完全理解这种方法,它是列表理解吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-30
  • 1970-01-01
相关资源
最近更新 更多