0

尝试访问多个文件的大小时,以下程序有什么问题?

import os, glob
cwd = "C:\\temp"
files = glob.glob (cwd + "\\.jpg")
with open ("file_size.txt", "w") as outfile:
    for file in files:
        get_size = os.path.getsize (file)
        outfile.writelines (get_size)
4

3 回答 3

0

writelines()用于将可迭代对象写入文件:

将一系列字符串写入文件。序列可以是任何产生字符串的可迭代对象,通常是字符串列表。

替换writelines()write()并使用str(get_size)

outfile.write(str(get_size))

这会将每个文件大小写入文件的新行。

或者,或者,将大小收集到一个列表中,然后通过以下方式编写writelines()

filesizes = [str((os.path.getsize(file)) for file in files]
with open ("file_size.txt", "w") as outfile:
    outfile.writelines(filesizes)
于 2013-09-01T11:56:07.010 回答
0

glob.glob使用外壳扩展。c:\temp\.jpg只会匹配一个名为.jpg. 你的意思是

files = glob.glob(cwd + r'\*.jpg")

(注意使用原始字符串前缀以避免必须转义反斜杠)。

于 2013-09-01T11:56:24.427 回答
0

您不能将数字传递给file.writelines().

print >>outfile, get_size
于 2013-09-01T11:54:40.057 回答