使用python从服务器日志文件中统计每日登录人数的通用代码
时间: 2024-02-23 12:00:16 浏览: 21
以下是使用Python从服务器日志文件中统计每日登录人数的通用代码:
```python
import re
import pandas as pd
from datetime import datetime, timedelta
# 读取日志文件并解析出IP地址和时间
filename = 'your_log_file'
pattern = r'\d+\.\d+\.\d+\.\d+.*\[(.*)\].*login.*'
df = pd.read_csv(filename, sep='\n', header=None, names=['line'])
df['ip'] = df['line'].str.extract(r'(\d+\.\d+\.\d+\.\d+)')
df['time'] = df['line'].str.extract(pattern)[0].str[:11]
df = df.dropna()
# 统计每日登录人数
start = datetime.strptime(df['time'].min(), '%d/%b/%Y')
end = datetime.strptime(df['time'].max(), '%d/%b/%Y')
date_range = pd.date_range(start=start, end=end, freq='D')
result = []
for date in date_range:
mask = (df['time'].str.startswith(date.strftime('%d/%b/%Y')))
count = df.loc[mask]['ip'].nunique()
result.append((date.date(), count))
# 输出结果
for date, count in result:
print(f'{date}: {count} users')
```
上述代码假设日志文件中包含有关用户登录的信息,并且该信息中包含了IP地址和时间。代码使用正则表达式从日志文件中解析出IP地址和时间,并使用pandas库将其转换为DataFrame格式。然后,代码对时间进行日期提取和去重,并使用nunique()函数统计每个日期内唯一登录的IP地址数,即为每日登录人数。
在实际应用中,需要根据日志文件的具体格式和内容进行调整和测试。同时,由于日志文件可能会很大,需要使用适当的方法来优化代码的效率和可扩展性。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![.zip](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)