首页 > 解决方案 > 如何在 Python 中迭代文件、执行操作然后重命名它们?

问题描述

我在一个目录中有文件,命名为 hosts_access_log_00.txt、hosts_access_log_01.txt 等等,直到 13 日。各个文件的输出必须存储在各自的文件中:bytes_hosts_access_log_00.txt、bytes_hosts_access_log_01.txt 等等,直到 13 日和它们应该存储在当前目录中。我该如何做到这一点?在上面的代码中,我只能用 1 个文件来实现这一点。

with open('hosts_access_log_00.txt', 'r') as input_file:
    bytes = []
    for lines in input_file.readlines():
        words = lines.split()
        bytes.append(words[-1])

bytes = list(int(byte) for byte in bytes)
usable_bytes = []
sum = 0
for usable in bytes:
    if usable > 5000:
        usable_bytes.append(usable)
        sum += usable

print(usable_bytes, sum)
bytecount = '{}'.format(len(usable_bytes))
sum_state = '{}'.format(sum)

with open('bytes_hosts_access_log_00.txt', 'w') as output_file:
    output_file.write(bytecount +'\n'+ sum_state)

标签: python

解决方案


你有 14 个文件,它们是连续命名的,对吗?我会使用一个简单的循环和 f 字符串。

for filenumber in range(14):
    filenumber = str(filenumber)
    filenumber = '0' * (2 - len(filenumber)) + filenumber
    with open(f'hosts_access_log_{filenumber}.txt', 'r') as input_file:
        bytes = []
        for lines in input_file.readlines():
            words = lines.split()
            bytes.append(words[-1])

    bytes = list(int(byte) for byte in bytes)
    usable_bytes = []
    sum = 0
    for usable in bytes:
        if usable > 5000:
            usable_bytes.append(usable)
            sum += usable

    print(usable_bytes, sum)
    bytecount = '{}'.format(len(usable_bytes))
    sum_state = '{}'.format(sum)

    with open(f'bytes_hosts_access_log_{filenumber}.txt', 'w') as output_file:
        output_file.write(bytecount +'\n'+ sum_state)

推荐阅读