【问题标题】:Open Terminal and Run Curl in Python在 Python 中打开终端并运行 Curl
【发布时间】:2020-05-18 15:39:38
【问题描述】:

我一直在尝试运行这段代码,

import csv
import os

token = 'Bearer xxx"'

with open('uris.csv', 'r', newline = '',encoding = 'utf-8') as ifp:
    ir = csv.reader(ifp)

    for i, row in enumerate(ir):
        v = ('curl -X "POST" "https://api.spotify.com/v1/playlists/7miRhC7OZhQUvnP1ONghJm/tracks?uris=spotify%3Atrack%3A'+
            ', '.join(row)+
            '" -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: '+
            token + '\n')
        os.system("gnome-terminal -e 'bash -c \""+v+"; sleep 10\" '")
        print(v)

它从 csv 和 将它们放入任何人都可以从 Spotify Api 获得的 curl 中。此 curl 将特定曲目添加到我的播放列表中。然后我打开一个新终端并执行 curl。 (os.system命令是从open terminal run command python找到的)

问题是,当我使用python3 code.py 为每个打开的 curl 新终端执行此代码时,但没有执行任何 curl。卷发本身是正确的。如果我复制粘贴一个卷曲并运行它,该曲目将添加到我的播放列表中。此外,如果我单独运行 curl,我会在终端中得到响应,如果我通过代码运行 curl,我不会得到响应。响应是这样的:

{
  "snapshot_id" : "MTQxxx"
}

非常感谢。

【问题讨论】:

    标签: python curl terminal spotify os.system


    【解决方案1】:

    问得很傻,但为什么不直接打电话给curlOutput = os.system("curl [your concatenation]")

    或许能解决你的问题。

    【讨论】:

    • 老兄……你刚刚救了我!!!我是一个完全的菜鸟,我没有想聪明。我以为我必须为每个卷曲打开一个新终端。你的方法100%奏效。非常感谢!! (很遗憾我的投票没有被拒绝,因为我的投票数少于 15,哈哈)
    • 很高兴为您提供帮助。有时我们都会过度设计解决方案,无论是否“菜鸟”。关于upvote,我认为您仍然可以勾选答案。
    猜你喜欢
    • 2013-10-07
    • 2020-05-14
    • 2020-06-28
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    相关资源
    最近更新 更多