Случайная публикация изображений Twitter из каталога

#python #twitter #tweepy

#python #Twitter #tweepy

Вопрос:

Итак, я не знаю, в чем конкретно заключается моя проблема, я программист-любитель, поэтому я не совсем уверен, правильно я поступаю или неправильно. Вот почему я был бы очень признателен, если бы кто-нибудь мог мне немного помочь. Это мой код, и я действительно не знаю, в чем моя ошибка, потому что он говорит, что это сбой в пути:

 import tweepy
from time import sleep
folderpath= "E:Fotosprueba"
def tweepy_creds():
    consumer_key = 'x'
    consumer_secret = 'x'
    access_token = 'x'
    access_token_secret = 'x'

    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)

    return tweepy.API(auth)

def getPathsFromDir(dir, EXTS="extensions=,png,jpg,jpeg,gif,tif,tiff,tga,bmp"):
    return this.listPaths('E:Fotosprueba', EXTS)

def tweet_photos(api):
imagePaths = "E:Fotosprueba"
for x in imagePaths:
    status = "eeeee macarena"
    try:
        api.update_with_media(filename=x,status=status)
        print ("Tweeted!")
        sleep(10)
    except Exception as e:
        print ("encountered error! error deets: %s"%str(e))
        break

if __name__ == "__main__":
    tweet_photos(tweepy_creds())
  

Комментарии:

1. Какую именно ошибку вы получаете и где она возникает (вы сможете увидеть это из обратной трассировки, если она есть), и каково ожидаемое поведение?

2. обнаружена ошибка! сообщения об ошибке: Не удается получить доступ к файлу: El sistema no puede encontrar el archivo especificado @Hoppeduppeanut результатом должно быть размещение в твиттере в моей учетной записи разных изображений, которые у меня есть в указанной мной папке

Ответ №1:

Похоже, у вас отсутствует отступ в вашем tweet_photos методе. Без этого отступа интерпретатор не сможет определить, где начинается и заканчивается метод.

Кроме того, вы пытаетесь выполнить итерацию по str . В этом случае значением x будет каждый отдельный символ в этой строке. Вы можете убедиться в этом, запустив следующий код в интерпретаторе Python:

 imagePaths = "E:Fotosprueba"
for x in imagePaths:
  print(x)
  

Вывод:

 Python 3.6.1 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
E
:

F
o
t
o
s
p
r
u
e
b
a
  

Судя по всему, вы можете вместо этого передать значение этого str в getPathsFromDir метод. Попробуйте это:

 def getPathsFromDir(dir, EXTS="extensions=,png,jpg,jpeg,gif,tif,tiff,tga,bmp"):
    return this.listPaths(dir, EXTS) # This now uses the value of dir


def tweet_photos(api):
    imagePaths = "E:Fotosprueba"
    # This now passes imagepaths to the getPathsFromDir method, 
    # and *should* return a list of files.
    for x in getPathsFromDir(imagePaths): 
        status = "eeeee macarena"
        try:
            api.update_with_media(filename=x,status=status)
            print ("Tweeted!")
            sleep(10)
        except Exception as e:
            print ("encountered error! error deets: %s"%str(e))
            break
  

Теоретически это должно работать так, как задумано, при условии, что ваш класс также включает listPaths метод. Если этого не произойдет, вам нужно будет изменить, чтобы включить этот метод, или изменить вызов на this.listpaths , чтобы указать на что-то еще.

Комментарии:

1. теперь это полностью сработало, это как раз то, что я искал. Гениально! Большое вам спасибо!