小编Jac*_*cky的帖子

使用 s3fs 下载文件

我正在尝试使用 s3fs 库从 s3 存储桶下载 csv 文件。我注意到使用 Pandas 编写新的 csv 以某种方式改变了数据。所以我想直接下载原始状态的文件。

文档具有下载功能,但我不明白如何使用它:

download(self, rpath, lpath[, recursive])Alias of FilesystemSpec.get.

这是我尝试过的:

import pandas as pd
import datetime
import os
import s3fs
import numpy as np

#Creds for s3
fs = s3fs.S3FileSystem(key=mykey, secret=mysecretkey)
bucket = "s3://mys3bucket/mys3bucket"
files = fs.ls(bucket)[-3:]


#download files:
for file in files:
    with fs.open(file) as f:
        fs.download(f,"test.csv")

AttributeError: 'S3File' object has no attribute 'rstrip'
Run Code Online (Sandbox Code Playgroud)

python amazon-s3 python-s3fs

5
推荐指数
1
解决办法
2541
查看次数

按频率过滤字符串列表

我有一个字符串列表:

a = ['book','book','cards','book','foo','foo','computer'] 
Run Code Online (Sandbox Code Playgroud)

我想返回此列表中的所有内容x > 2

最终输出:

a = ['book','book','book']
Run Code Online (Sandbox Code Playgroud)

我不太确定如何解决这个问题。但我想到了两种方法:


方法一:

我创建了一个字典来计算某个项目出现的次数:

a = ['book','book','cards','book','foo','foo','computer'] 

import collections

def update_item_counts(item_counts, itemset):
    for a in itemset:
        item_counts[a] +=1

test = defaultdict(int)
update_item_counts(test, a)
print(test)

Out: defaultdict(<class 'int'>, {'book': 3, 'cards': 1, 'foo': 2, 'computer': 1})
Run Code Online (Sandbox Code Playgroud)

我想用这本词典过滤掉列表,但我不知道该怎么做。


方法二:我尝试编写一个列表理解,但它似乎不起作用:

res = [k for k in a if a.count > 2 in k]
Run Code Online (Sandbox Code Playgroud)

python list

2
推荐指数
1
解决办法
536
查看次数

标签 统计

python ×2

amazon-s3 ×1

list ×1

python-s3fs ×1