1

我有一个脚本可以获取最终的重定向 url 并将其保存到 CSV 文件中。

该脚本在 1 列中编写代码,例如 A1 然后 A3 然后 A5

如何使其按行编写代码,例如 A1 B1 C1 D1

请看是我想要的红色,蓝色是最终结果,我不希望它是那样的(1列中的列表向下A1 A3 A5,每个单元格之间都有一个空格!!)

这是我的最终剧本

import urllib2
import csv
import sys

url = 'http://www.test.com'

u = urllib2.urlopen(url)
localfile = open('C:\\test\\file.csv', 'a')
writer = csv.writer(localfile)
writer.writerow([u.geturl()])
localfile.close()
4

2 回答 2

1

如果它只有一行,为什么不自己创建 CSV?

import urllib2

url = 'http://www.google.com'

u = urllib2.urlopen(url)
localFile = open('C:\\file.csv', 'ab')
localFile.write(u.geturl() + ",")

localFile.close()
于 2013-07-10T10:11:45.433 回答
0

writer.writerow()表示将列表写入一行。因此,每次调用它都会有一个新行。所以结果是你不想要的,它们在一列中。如果你想把它们写成一行。你最好弄个列表,然后把你想要的数据在里面排成一行,比如l = [111, 222, 333, 444]. 然后writer.writerow(l)只调用一次。那你就可以得到你想要的了。

编辑:
如果脚本像守护进程一样服务,则一直运行并等待输入:

#10 is the number you want in a row, you can assign it yourself.
L = []
urls = ['http://www.google.com', 'http://facebookcom', 'http://twitter.com']
for url in urls:
    u = urllib2.urlopen(url)
    L.append(u.geturl())

localfile = open('C:\\test\\file.csv', 'w')
writer = csv.writer(localfile)
writer.writerow(L)
localfile.close()

如果脚本像回调一样服务,那么每次它只会获得一个 url。很抱歉,我在csv模块中没有看到任何用于修改文件的 API。

至于我,我认为在这种情况下您不需要 csv 文件。csv 中的一行通常代表一个完整的数据结构,而不是一个列表。如果您想轻松导入文件,您可以使用普通文件,每个 url 一行或以空格分隔。下次需要的时候,可以简单地使用处理str方法,split快速转回列表。

>>> 'http://www.google.com\nhttp://www.facebook.com\nhttp://www.twitter.com'.split('\n')
['http://www.google.com', 'http://www.facebook.com', 'http://www.twitter.com']
>>> 
于 2013-07-10T08:12:56.060 回答