将CSV循环到URL

时间:2019-03-22 18:04:57

标签: python csv

我需要下载大量的PDF文件才能工作。 PDF文件均从相同的URL(以下示例)下载,唯一的变化是objId=部分后面的数字。这似乎是“自动化无聊的东西”并使我的老板惊奇的绝好机会,但是我的程序失败了,因为URL的输出在objId的两端都给出了[%27 ...%27],但这不是我要打开的地址。

所需的URL(已编辑):https://.../cs.exe?func=ll&objId=385135288&objAction=download

我有一个csv文件,其中列出了所有objId数字。该csv看起来像:

385135288 385030780 385156245 385283431 384988131

这是我的Python代码:

import csv
import webbrowser
f = open('5_Sample_Object_IDs.csv')
csv_f = csv.reader(f)
for row in csv_f:
    obj_id = row
    url = 'https://.../cs.exe?func=ll&objId='+str(obj_id)+'&objAction=download'
    webbrowser.open(url)
print('Complete! Check your Downloads folder.')

我的输出是:

['385135288']
['385030780']
['385156245']
['385283431']
['384988131']

输出网址:https://.../cs.exe?func=ll&objId=[%27384988131%27]&objAction=download

似乎我的问题来自每个输出的['...']; URL正在使用[并将'转换为%27。我不知道如何解决这个问题。我如何才能让该程序仅输出数字?

非常感谢您的帮助或指导!

2 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow!

看起来您只需要引用obj_id所在列表的索引:

obj_id = row[0]

您正在将列表传递到str()而不是列表中的字符串元素。然后,您也可以省略str()调用。我也建议使用.format()而不是连接字符串:

import csv
import webbrowser
f = open('5_Sample_Object_IDs.csv')
csv_f = csv.reader(f)
for row in csv_f:
    obj_id = row[0]
    url = 'https://.../cs.exe?func=ll&objId={}&objAction=download'.format(obj_id)
    webbrowser.open(url)
print('Complete! Check your Downloads folder.')

答案 1 :(得分:0)

这里没有理由使用CSV阅读器。您只有一个URL列表,应该直接阅读它们。

PeriodicWorkRequest request =
                new PeriodicWorkRequest.Builder(LocationListenerWorker.class,
                        12, HOURS)
                        .build();

        mWorkManager.enqueueUniquePeriodicWork(Constants.LOCATION_TASK_ID,
                ExistingPeriodicWorkPolicy.REPLACE, request);