为什么对于> 1的循环迭代,os.stat.st_size和os.path.getsize返回0?

时间:2019-06-25 21:57:30

标签: python-3.x

我正在开发一个脚本,该脚本循环遍历特定目录中的文件夹,在这些文件夹中创建新的压缩文件夹,然后将任何文件移动到这些新的压缩文件夹中。为了更好地记录此过程的工作状况,我想在压缩文件夹中的文件之前先获取文件夹的大小,然后在压缩文件后获取文件的大小,以查看压缩的工作情况并记录文件的大小压缩前后的差异。

例如,我有文件夹A。在文件夹A中,我有文件1、2、3和4。此过程将在文件夹A内创建一个名为A1的新压缩文件夹。然后,它将文件夹A(1、2、3、4)中的所有文件移动到新的压缩文件夹A1中。我想在处理之前获取文件夹A的大小,然后在处理之后获取文件夹A的大小。

我遇到的问题是,使用os.path.getsize(path)或os.stat(path).st_size时,它在for循环的第一次迭代中起作用,但是随后的迭代返回的大小为前后尺寸检查均为0。

PF('widgetName').ht.updateSettings({
colHeaders: true,
rowHeaders: true,
nestedHeaders: [
["", {label:"my label", colspan:3}],
["A", "B", "C", "D"]
]
})

我想要的是让os.stat(ptah).st_size返回sub_folder的大小,然后再压缩并在其中移动文件。实际上,这在top for循环的第一次迭代中有效,但是当它循环遍历任何后续sub_folder时,压缩前后的结果都为0。

当用os.path.getsize(path)替换os.stat(path).st_size时,我看到了相同的结果。

archive_path = 'drop/client/in_archive/'
archive_list = os.listdir(archive_path)
for sub_folder in v_archive_list:
    orig_folder_size = os.stat(archive_path + sub_folder).st_size
    if not os.path.exists(archive_path + sub_folder + '/' + sub_folder + '_compressed'):
        new_folder = archive_path + sub_folder + '/' + sub_folder + '_compressed'
        os.mkdir(new_folder)
        compress_folder = 'compact /c ' + str(new_folder)
                os.system(compress_folder)
        print('Folder created')
    else:
        print('Folder already exists')
    for file in archive_path + sub_folder:
        os.rename(archive_path + sub_folder + '/' + file, new_folder + '/' + file)
    compressed_folder_size = os.stat(archive_path + sub_folder).st_size

任何帮助或帮助都将不胜感激!

0 个答案:

没有答案