我正在使用 DbVisualizer 连接到 athena 实例。我有一个有效的查询:
SELECT device, description, id, size, date FROM test.database WHERE month = '01'
and device not like '%link%'
and device not like '%Link%'
and device not like '%LINK%'
and id not like '%abc%'
and id not like '%Abc%'
and id not like '%ABC%'
group by device, description, id, size, date order by month desc
Run Code Online (Sandbox Code Playgroud)
我想做的就是清理它并使用正则表达式捕获案例。我很确定 /link.*/ig并且/abc.*/ig会发现情况会改变它,但我不知道如何将其插入。我"input.regex" =也无法开始工作。
我正在查看 boto3 文档,但找不到它是否本身支持检查文件是否已存在于 s3 中,如果不存在,请不要尝试重新上传。
这是我的工作:
import boto3
s3_client = boto3.client('s3')
s3_bucket = 'bucketName'
s3_folder = 'folder1234/'
temp_log_dir = "tempLogs/"
s3_client.upload_file(temp_log_dir + file_name, s3_bucket, s3_folder + file_name)
Run Code Online (Sandbox Code Playgroud)
我注意到的是,如果文件已经在 S3 中退出,则来自 boto3 的 .upload_file() 仍会传输文件。我通过查看 iftop 进行了这项检查。
是否有一些我缺少禁用“如果文件存在则自动覆盖”的参数?
谢谢
编辑尝试 head 方法
s3 = boto3.resource('s3')
file_name = 'somelogfile.gz'
try:
s3.Object(s3_bucket+ s3_folder+s3_filename).load()
print 'success'
except botocore.exceptions.ClientError as e:
print e
Run Code Online (Sandbox Code Playgroud) 我在grafana中有一个视觉效果。我可以手动转到菜单单击导出并导出 json 中的时间序列数据。这很好用。有没有办法可以在 python 中编写脚本?是否有一些我可以点击的 api 会返回视觉对象的 json?
我在谷歌上搜索,看起来我可以使用 api 创建仪表板/视觉效果并管理它们,但不确定如何使用 api 导出数据。
我有一个盒子,里面有很多 redis 的东西。我将代码从写入通道转换为执行 lpush。为了查看我的输出,我使用了 redis-cli 的monitor命令。有没有办法过滤监视器命令以仅显示我感兴趣的 lpush 通道。服务器上有很多内容,所以我无法捕获我的输出。
作为参考,我使用 redis-cli 订阅频道名称。但这对 lpush 不起作用
试图更好地理解这一点: https://pymotw.com/2/multiprocessing/basics.html
我有 20 多个“大”日志(每个日志大约 6-9gig,但经过压缩,即 log1...20.gz)
我的 python 脚本将遍历指定目录中的每个日志并计算出特定列的总数,然后写入文件并继续到下一个日志文件。我注意到,当我这样做时,我并没有使用系统中的所有核心。所以为了使用更多的核心,我这样做了
script1.py < folder 1 (contains logs 1-5 , write to report1-5.txt)
script2.py < folder 2 (contains logs 6-10, write to report6-10.txt)
script3.py < folder 3 (contains logs 11-15, write to report11-15.txt)
script4.py < folder 4 (contains logs 16-20, write to report16-20.txt
Run Code Online (Sandbox Code Playgroud)
理想情况下,我只会有 script1.py < 文件夹 1 (包含所有 20 个日志并写入 report.txt)
如果我启用“导入多重处理”,我是否能够实现拥有 1 个脚本和许多工作人员浏览不同文件,或者是否有许多工作人员尝试处理 sale log.gz 文件?还是我误解了这些信息
谷歌搜索并查看了这个论坛,但找不到我是否可以使用 lftp 暂停下载。
当前正在下载大量日志并想暂停,向系统添加更多驱动器并继续下载。
谢谢
通过执行以下操作,我能够在jupyter笔记中提取csv:
csvData= pd.read_csv("logfile.csv")
Run Code Online (Sandbox Code Playgroud)
我的数据如下所示:
event_timestamp ip url
2018-01-10 00:00 111.111.111.111 http://webpage1.com
2018-01-10 00:00 222.222.222.222 http://webpage2.com
...
..
.
Run Code Online (Sandbox Code Playgroud)
我得到了一个独特的IP列表:
list_ips = csvData("[ip]")
Run Code Online (Sandbox Code Playgroud)
我想做的是获得独特的。通常我会这样做:
list_ips.unique()
Run Code Online (Sandbox Code Playgroud)
但是在这种情况下,我得到这个错误:
AttributeError: 'DataFrame' object has no attribute 'unique'
Run Code Online (Sandbox Code Playgroud)
(我可以使用list_ips.head(),它将列出一些IP,但它不是唯一列表)
谢谢
编辑 我的问题是我实际上有:
list_ips = csvData([["ip"]])
Run Code Online (Sandbox Code Playgroud)
因此,我卸下了1套括号,将其变成:
list_ips = csvData(["ip"])
Run Code Online (Sandbox Code Playgroud)
然后,我可以按照温家宝的榜样做:
list_ips.unique().tolist()
Run Code Online (Sandbox Code Playgroud)
输出:
['111.111.111.111','222.222.222.222'...]
Run Code Online (Sandbox Code Playgroud) 我正在运行 python 2.7。我下载了 ipaddress.py ( https://github.com/phihag/ipaddress )的原始文件。我试图运行一个测试来验证每个示例的 IP 地址。但即使是有效的 IP 地址似乎也无效。
>>> import ipaddress
>>> ipaddress.ip_address('127.0.0.1')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "ipaddress.py", line 163, in ip_address
' a unicode object?' % address)
ipaddress.AddressValueError: '127.0.0.1' does not appear to be an IPv4 or IPv6 address. Did you pass in a bytes (str in Python 2) instead of a unicode object?
>>> ipaddress.ip_address('192.168.0.1')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File …Run Code Online (Sandbox Code Playgroud) 通常使用 jupyternotes 我可以导入熊猫制作我的数据框并导出到 csv。
我正在尝试使用 python 脚本自动执行这个重复出现的查询。我不知道如何测试我的脚本,因为我无法将 df 打印到屏幕上。在 jupyternotes 中,我只需要在任何单元格中输入 df 名称,它就会显示出来。
这是我在做什么
import pandas as pd
def run_agg_query(db):
df1 = pd.read_sql( "select some query",conn)
display(df1)
Run Code Online (Sandbox Code Playgroud)
但我无法显示 df。
我有看起来像这样的数据:
Date MBs GBs
0 2018-08-14 20:10 32.00 MB 0.00 GB
1 2018-08-14 20:05 4.00 MB 0.00 GB
2 2018-08-14 20:00 1000.99 MB 1.23 GB
Run Code Online (Sandbox Code Playgroud)
我通过这样做剥离了 MB 和 GB:
df['MBs']=df['MB'].str.strip('MB')
df['GBs']=df['GB'].str.strip('GB')
Run Code Online (Sandbox Code Playgroud)
然后将数字转换为浮点数并得到总数:
df['MBs'] = df['MBs'].astype('float')
df['GBs'] = df['MBs'].astype('float')
df.loc['Total', ['MBs', 'GBs']] = df.sum()
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,我的数据有指数
Date Data Transferred (MB) Data Transferred (GB)
146 2018-08-14 08:00:00 1.871237e+05 1.874017e+05
147 2018-08-14 07:55:00 1.123211e+05 1.961854e+05
148 2018-08-14 07:50:00 2.187703e+05 2.187123e+05
...
Total 1.408910e+08 1.408910e+08
Run Code Online (Sandbox Code Playgroud)
我如何将浮点数从指数转换为“正常”,我只是转换它,因为我需要得到总数
我建立了一个大熊猫感兴趣的值列表.
table1 = pd.read_csv("logswithIPs.csv")
cips = data_dash['ip'].unique().tolist()
print(cips[:10])
['111.111.111.111', '123.123.123.123', '122.122.122.122', '2.2.2.2', '3.3.3.3', '4.4.4.4', '5.5.5.5'...'']
Run Code Online (Sandbox Code Playgroud)
现在我有了上面的列表,我想看看这些IP是否存在于我的SQL数据库的表中.
filterIPs = pd.read_sql("select count(*) as count, url from "+table2+" where c_ip in "+cips+" group by url",conn)
Run Code Online (Sandbox Code Playgroud)
具体来说,我的问题在于我的语法c_ip in "+cips+":
TypeError: Can't convert 'list' object to str implicitly
Run Code Online (Sandbox Code Playgroud)
如何在SQL查询中正确包含列表?
***编辑
所以我终于让它工作了,看起来像熊猫不想要一个它想要一个字符串的列表.
所以我
cipTup = tuple(cips).然后在我的查询中我做了..
where c_ip in "+str(cipTup)"
Run Code Online (Sandbox Code Playgroud)
它起作用了.
我的猜测是,熊猫知道如何将这样的字符串视为列表.
我写了一些代码来读取文件中的数字.将其附加到变量,然后递增数字,以便下次运行时,文件中的数字将为+1.看起来它的工作除了它似乎增加了两次..例如这里是我的代码:
11 def mcIPNumber():
12 with open('mcIPlatest.txt', 'r+') as file:
13 NameNumber= file.read().replace('\n','')
14 NameNumber=int(NameNumber)
15 NewNumber= NameNumber+1
16 print "newnumber = %s" % NewNumber
17 file.seek(0)
18 file.write(str(NewNumber))
19 file.truncate()
20 return NameNumber
21
22 def makeNameMCTag():
23 NameNumber = mcIPNumber()
24 NameTag = "varName" + str(NameNumber)
25 print "Name Tag: %s" % NameTag
26 mcGroup = "varTagmc"
27 #IPNumber = 1
28 mcIP = "172.16.0.%s" % NameNumber
29 print ( "Multicast Tag: %s, %s" % (mcGroup,mcIP))
30
31 …Run Code Online (Sandbox Code Playgroud) 我试图寻找几个SO,彼此相邻绘制2个地块,但我找不到适合我的情况。大多数情况涉及了解子图的工作方式。我希望有人可以在这里解释。
这是我在2个不同行上的2个不同图:
import matplotlib.pyplot as plt
from matplotlib import six
import pandas as pd
import numpy as np
Size = pd.read_sql("select...".sort_values(['date'],ascending=True)
Run Code Online (Sandbox Code Playgroud)
Cap = pd.read_sql("select...".sort_values(['date'],ascending=True)
Run Code Online (Sandbox Code Playgroud)
我很确定,从我一直阅读的内容来看,我需要将它们分成子图,然后再将它们放在同一行中。虽然不知道如何做到这一点。
python ×7
pandas ×4
python-2.7 ×4
dataframe ×3
jupyter ×2
amazon-s3 ×1
boto3 ×1
grafana ×1
grafana-api ×1
lftp ×1
loops ×1
matplotlib ×1
plot ×1
python-3.x ×1
redis ×1
redis-cli ×1
sql ×1