将列表元素作为函数参数传递

时间:2021-01-19 07:32:42

标签: python

我正在构建一个 Instagram 上传机器人。函数 upload 应接收图像位置,然后继续上传。我面临的问题是,遍历图像列表中每个单独元素的循环会打印回数字,而不是字符串。 我已将代码隔离为:

print(col)
for i in col:
    print(i)

注意:在理想情况下,print(i) 将替换为 upload(i)

输出:

    ['C:\\Users\\aa\\Desktop\\Programming\\Instagram\\media\\pexels-eberhard-grossgasteiger-1612360.jpg', 'C:\\Users\\aa\\Desktop\\Programming\\Instagram\\media\\pexels-northwoods-murphy-1878810.jpg', 'C:\\Users\\aa\\Desktop\\Programming\\Instagram\\media\\pexels-stein-egil-liland-3510717.jpg']
[[[235 229 229]
  [235 229 229]
  [235 229 229]
  ...
  [239 233 235]
  [239 233 235]
  [239 233 235]]

 [[235 229 229]
  [235 229 229]
  [235 229 229]
  ...
  [239 233 235]
  [239 233 235]
  [239 233 235]]

 [[235 229 229]
  [235 229 229]
  [235 229 229]
  ...
  [239 233 235]
  [239 233 235]
  [239 233 235]]

 ...

 [[ 59  51  38]
  [ 60  52  39]
  [ 61  53  40]
  ...
  [159 144 137]
  [133 118 113]
  [115 100  95]]

 [[ 58  50  37]
  [ 58  50  37]
  [ 58  50  37]
  ...
  [143 128 121]
  [132 117 112]
  [100  85  80]]

 [[ 58  50  37]
  [ 58  50  37]
  [ 58  50  37]
  ...
  [119 104  97]
  [ 81  66  61]
  [ 80  65  60]]]
[[[23 19 18]
  [23 19 18]
  [22 18 17]
  ...
  [23 19 16]
  [23 19 18]
  [22 18 17]]

 [[23 19 18]
  [23 19 18]
  [22 18 17]
  ...
  [22 18 15]
  [22 18 17]
  [21 17 16]]

 [[23 19 18]
  [23 19 18]
  [22 18 17]
  ...
  [20 16 13]
  [21 17 16]
  [20 16 15]]

 ...

 [[23 18 15]
  [23 18 15]
  [23 18 15]
  ...
  [39 34 30]
  [39 34 30]
  [39 34 30]]

 [[23 18 15]
  [23 18 15]
  [23 18 15]
  ...
  [39 34 30]
  [39 34 30]
  [39 34 30]]

 [[23 18 15]
  [23 18 15]
  [23 18 15]
  ...
  [39 34 30]
  [39 34 30]
  [39 34 30]]]
[[[ 27  39  53]
  [ 27  39  53]
  [ 27  39  53]
  ...
  [ 27  36  53]
  [ 27  36  53]
  [ 27  36  53]]

 [[ 27  39  53]
  [ 27  39  53]
  [ 27  39  53]
  ...
  [ 26  35  52]
  [ 26  35  52]
  [ 26  35  52]]

 [[ 27  39  53]
  [ 27  39  53]
  [ 27  39  53]
  ...
  [ 26  35  52]
  [ 26  35  52]
  [ 26  35  52]]

 ...

 [[ 31  35  38]
  [ 36  40  43]
  [ 30  31  33]
  ...
  [ 77  88 106]
  [ 77  90 107]
  [ 77  90 106]]

 [[ 25  26  28]
  [ 34  34  36]
  [ 31  29  32]
  ...
  [ 76  87 107]
  [ 74  87 106]
  [ 74  87 104]]

 [[ 26  26  28]
  [ 34  34  36]
  [ 33  28  32]
  ...
  [ 77  88 110]
  [ 76  89 108]
  [ 75  88 107]]]

完整代码如下:

from instabot import Bot 
from skimage.io import imread_collection
import random
import json
import os

imageDir = os.listdir("C:\\Users\\aa\\Desktop\\Programming\\Instagram\\media")

col_dir = 'C:\\Users\\aa\\Desktop\\Programming\\Instagram\\media\\*.jpg'
col = imread_collection(col_dir)

with open('C:\\Users\\aa\\Desktop\\Programming\\Instagram\\quotes.json') as f:
  data = json.load(f)
  

def getQuote():
    quote = random.choice(data)
    return ('"'+quote['text']+'" - '+quote['author'])
getQuote()
print(getQuote())
bot = Bot() 
bot.login(username = "",  password = "")

def upload(path):
    bot.upload_photo(path, caption=(getQuote()))
    for item in imageDir:
      if item.endswith(".REMOVE_ME"):
          os.remove(os.path.join("C:\\Users\\aa\\Desktop\\Programming\\Instagram\\media", item))
print(col)
for i in col:
    print(i)

我是 python 新手,所以我可能犯了一些基本错误,但如果你能让 for 循环打印一个正常的字符串,我会很感激,因为 str 函数没有效果

1 个答案:

答案 0 :(得分:1)

您正在尝试获取所有路径,但您所做的实际上是读取图像并获取像素数据。要获取所有路径,您可以使用 glob 模块。
from glob import glob 添加到您的导入并更改以下行:

col = imread_collection(col_dir)

为此:

col = glob(col_dir)
相关问题