Python:如何下载文件并将其写入不同的目录

时间:2014-11-20 14:58:22

标签: python directory

我已经审查了这方面的其他帖子,但没有解决我的问题。 我有一个脚本,每天从服务器下载一堆文件。我已经将每个文件的名称设置为url的最后一部分。这是我的代码:

# Grab each file.
DATE = datetime.date.today().isoformat()
for url in urls:
  r = s.get(config['base_url'] + url)
  if r.status_code == 200:
    parsed_url = urlparse(r.url)
    filename = os.path.basename(parsed_url.path,DATE)
    directory = '/data/data/data.zonefiles/CZDS'
    if not os.path.exists(directory):
      os.makedirs(directory)
    path = directory + '/' + filename + '.txt.gz'
    with open(path, 'wb') as f:
        for chunk in r.iter_content(1024):
            f.write(chunk)
  else:
    sys.stderr.write("Unexpected HTTP response for URL " + url + "\n")

现在我要做的是,对于每个文件(将每天下载),我想要自动创建一个文件夹(与文件名相同,没有日期)并写入输出那里。所以基本上为每组文件创建一个单独的文件夹。

目前我收到此错误:

Traceback (most recent call last):
  File "download.py", line 56, in <module>
    filename = os.path.basename(parsed_url.path,DATE)
TypeError: basename() takes exactly 1 argument (2 given)

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

创建文件名似乎是错误的:

filename = os.path.basename(parsed_url.path,DATE)

parsed_url.pathDATE是两个单独的参数。尝试类似的事情;

p = parsed_url.path + "_" + DATE
filename = os.path.basename(p)

要创建子目录,它几乎以相同的方式工作;

 directory = '/data/data/data.zonefiles/CZDS' + "/" + DATE