关于python中的文件下载

时间:2016-06-30 07:11:33

标签: python pycharm pyscripter

我写了这段代码来下载一个srt字幕文件,但这不起作用。请检查此问题并帮助我解释代码。我需要找到我正在做的错误。感谢。

from urllib import request 

srt_url = "https://subscene.com/subtitle/download?mac=LkM2jew_9BdbDSxdwrqLkJl7hDpIL_HnD-s4XbfdB9eqPHsbv3iDkjFTSuKH0Ee14R-e2TL8NQukWl82yNuykti8b_36IoaAuUgkWzk0WuQ3OyFyx04g_vHI_rjnb2290" 

def download_srt_file(srt_url): 
    response = request.urlopen(srt_url) 
    srt = response.read() 
    srt_str = str(srt) 
    lines = srt_str.split('\\n') 
    dest_url = r'srtfile.srt' 
    fx = open('dest_url' , 'w') 
    for line in lines: 
        fx.write(line) 
    fx.close() 

    download_srt_file(srt_url) 

1 个答案:

答案 0 :(得分:1)

有很多问题或可以改进。

  • 您缺少关于功能的return声明。
  • 您正在从函数中调用该函数,因此您实际上根本没有调用它。你永远不会输入它。
  • dest_url不是字符串,它是一个变量,因此fx = open('dest_url', 'w')将返回错误(没有此类文件)
  • 为了避免处理关闭和刷新您正在编写的文件,只需使用with语句。
  • 你的split('//n')也错了。你正在逃避这样的斜线。您想要分割线条,使其必须为split('\n')
  • 最后,您不必将srt转换为字符串。它已经是。

以下是经过修改且希望运行的代码版本,上面已实现。

from urllib import request

def download_srt_file(srt_url):
    response = request.urlopen(srt_url)
    srt = response.read()
    lines = srt.split('\n')
    dest_url = 'srtfile.srt'
    with open(dest_url, 'w') as fx:
        for line in lines:
            fx.write(line)
    return

srt_url = "https://subscene.com/subtitle/download?mac=LkM2jew_9BdbDSxdwrqLkJl7hDpIL_HnD-s4XbfdB9eqPHsbv3iDkjFTSuKH0Ee14R-e2TL8NQukWl82yNuykti8b_36IoaAuUgkWzk0WuQ3OyFyx04g_vHI_rjnb2290"
download_srt_file(srt_url)

告诉我它是否适合你。

最后一点是,您没有为正在编写的文件设置目标目录。你确定要这么做吗?