我正在尝试从我在AWS中运行的Hadoop进程中读取一些日志.日志存储在S3文件夹中,并具有以下路径.
bucketname = name key = y/z/stderr.gz这里Y是集群ID,z是文件夹名称.这两者都充当AWS中的文件夹(对象).所以完整路径就像x/y/z/stderr.gz.
现在我想解压缩.gz文件并读取文件的内容.我不想将此文件下载到我的系统想要将内容保存在python变量中.
这是我到现在为止所尝试的.
bucket_name = "name"
key = "y/z/stderr.gz"
obj = s3.Object(bucket_name,key)
n = obj.get()['Body'].read()
Run Code Online (Sandbox Code Playgroud)
这给了我一种不可读的格式.我也试过了
n = obj.get()['Body'].read().decode('utf-8')
Run Code Online (Sandbox Code Playgroud)
这给出了错误utf8'编解码器无法解码位置1中的字节0x8b:无效的起始字节.
我也试过了
gzip = StringIO(obj)
gzipfile = gzip.GzipFile(fileobj=gzip)
content = gzipfile.read()
Run Code Online (Sandbox Code Playgroud)
这将返回错误IOError:不是gzip压缩文件
不确定如何解码此.gz文件.
编辑 - 找到解决方案.需要传递n并使用BytesIO
gzip = BytesIO(n)
Run Code Online (Sandbox Code Playgroud) 我试图从我的系统附加一个文件,使用R将其发送到电子邮件ID.我正在使用gmailr包发送邮件.我尝试了以下代码.
library(gmailr)
mime() %>%
to("abcd@gmail.com") %>%
from("xyz@gmail.com") %>%
text_body("My First Email using R.") -> first_part
first_part %>%
subject("Test Mail from R") %>%
attach_file("BazaarQueriesforURLData.txt") -> file_attachment
send_message(file_attachment)
Run Code Online (Sandbox Code Playgroud)
我已经能够发送基于文本的消息,但我无法从R发送附件.我的附件只在默认目录文件夹中.我在互联网上看到了很多解决方案但我无法找到解决方案.
我希望有一个具有正确的OAuth或基于Json的身份验证的解决方案,因为Google阻止了我尝试使用基于smtp的身份验证.
我正在尝试使用boto3从S3下载文本文件.
这是我写的.
class ProgressPercentage(object):
def __init__(self, filename):
self._filename = filename
self._size = float(os.path.getsize(filename))
self._seen_so_far = 0
self._lock = threading.Lock()
def __call__(self, bytes_amount):
# To simplify we'll assume this is hooked up
# to a single filename.
with self._lock:
self._seen_so_far += bytes_amount
percentage = round((self._seen_so_far / self._size) * 100,2)
LoggingFile('{} is the file name. {} out of {} done. The percentage completed is {} %'.format(str(self._filename), str(self._seen_so_far), str(self._size),str(percentage)))
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)
而我正在使用它
transfer.download_file(BUCKET_NAME,FILE_NAME,'{}{}'.format(LOCAL_PATH_TEMP , FILE_NAME),callback = ProgressPercentage(LOCAL_PATH_TEMP + FILE_NAME))
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误,该文件夹中没有该文件.显然,当我已经在同一文件夹中有一个具有此名称的文件时,它可以工作,但是当我下载一个新文件时,它会出错.
我需要做出哪些更正?
我有一个数据框,有两列Link
和Value
.该Link
列的值为"abcd.com/efgh/ijkl/mnop",是一个URL.此帧中有10,000行,我从100,000行的样本中获取.
现在我想从左到右提取最后一个"/"后的数据,或者从右到左提取第一个"/".所以对于例如上面显示的示例我是提取"mnop"
我想对所有的10,000行是有列做到这一点Link
,而Value
列不应进行.
我能够使用
a = sapply(webdatatest, substring, 36)
Run Code Online (Sandbox Code Playgroud)
但这不是一个动态的方法,因为最后"/"的位置会改变.这也影响了第二列.
所以需要一些帮助.
我仍然处于python的学习阶段,想知道我们如何汇总数据并计算名为count的列中的重复数据行
数据帧结构如下
Col1| Value
A | 1
B | 1
A | 1
B | 1
C | 3
C | 3
C | 3
C | 3
Run Code Online (Sandbox Code Playgroud)
我的结果应该如下
Col1|Value|Count
A | 1 | 2
B | 1 | 2
C | 3 | 4
Run Code Online (Sandbox Code Playgroud)