python - 如何在 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)
解决方案
你有 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)
推荐阅读
- javascript - 在 getJSON 之外调用变量
- java - 更新后调用删除时有时会出现 org.hibernate.StaleStateException
- azure - 在 Azure 中创建多个子网
- html - 模态框 - 仅显示框的内部
- python - 如何在kivy中单击按钮时更新MDLabel的文本
- python - 在图像上添加/读取标签 Python
- microsoft-information-protection - MIP SDK 1.10.97 以 -1073740791 静默退出
- python - 如果键存在,则添加嵌套字典的值
- python - 具有多列的数据框的不同聚合
- java - 如何在使用 camera2 api 录制时向视频添加自定义过滤器