亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 runcmd 提取推文信息時出現問題

使用 runcmd 提取推文信息時出現問題

汪汪一只貓 2023-06-27 10:46:51
我試圖讓這段代碼從任何提到我的 Twitter 句柄的推文中提取媒體,通過子進程模塊使用 ffmpeg 對其進行轉換,然后將轉換后的媒體作為回復發送回該人。import tweepyfrom tweepy import Streamfrom tweepy.streaming import StreamListenerfrom datetime import datetimeimport timeimport subprocessstdout = subprocess.PIPEdef runcmd(cmd):    x = subprocess.Popen(cmd, stdout=subprocess.PIPE)    return x.communicate(stdout)import jsonimport randomclass StdOutListener(StreamListener):    def on_data(self, data):        clean_data = json.loads(data)        tweetId = clean_data['id']        tweet_name = clean_data['user']['screen_name']        tweet_media = clean_data['entities']['media'][0]['media_url']        print(tweet_media)        tweet_photo = runcmd('ffmpeg -i', tweet_media, 'output.jpg')        tweet = 'Here ya go'        now = datetime.now()        dt_string = now.strftime("%d/%m/%Y %H:%M:%S")        print(' Reply sent to @'+tweet_name, 'on', dt_string, '\n' ' Message:', tweet, '\n')        respondToTweet(tweet_media, tweet, tweetId)但我總是會遇到這個錯誤:Exception has occurred: TypeErrorruncmd() takes 1 positional argument but 3 were given   tweet_photo = runcmd('ffmpeg -i', tweet_media, 'output.jpg')顯然,我不能介于tweet_media兩者之間ffmpeg -i,output.jpg那么我該如何進行tweet_media無錯誤的轉換呢?
查看完整描述

1 回答

?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

如果您想保持通話原樣,您需要這樣的東西:

def?runcmd(*cmd):
????x?=?subprocess.Popen([*cmd],?stdout=subprocess.PIPE)?
???????return?x.communicate(stdout)

進一步說明:Popen()將命令作為單詞列表運行。因此,有兩個 Python 特性需要使用。

  1. def runcmd(*cmd):這表示該函數接受任意參數列表,并將它們存儲為cmd元組,因此調用runcmd('ffmpeg', '-i', tweet_media, 'output.jpg')結果為cmdequaling?('ffmpeg', '-i', tweet_media, 'output.jpg')。

  2. Popen將表示要運行的命令的字符串列表作為第一個參數。因此,首先*cmd將元組展開為元素,然后[*cmd]將元素放入列表中,這樣我們就得到了所需的調用['ffmpeg', '-i', tweet_media, 'output.jpg']

注意:指定'ffmpeg -i'為列表的第一個元素會Popen搜索名為 的可執行文件ffmpeg<SPACE>-i,該可執行文件很可能不存在,因此您應該使用'ffmpeg', '-i'它。


查看完整回答
反對 回復 2023-06-27
  • 1 回答
  • 0 關注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號