Python变量/计数不增加

时间:2016-11-15 03:50:30

标签: python download

我的代码尝试创建一个文件夹,然后将pdf下载到相应的文件夹。在我当前的代码中,变量和计数器“i”跟踪要下载的文件夹,但由于某种原因似乎没有更新。在else if语句结束时,我希望变量i增加1.不知道问题是什么,我对python相当新,如果在java中编码类似的情况,我知道这只能用于文件但是不确定为什么它不能在python中工作。

import re
import os
import urllib
f = open("newfile.txt")
suffix = '.pdf'
for line in f:
    i = 0
    folderopt = str(i)


    if suffix in line:
        print('download')
        url = line.rstrip('\n')
        pdfname = url.split('LTN',1)[1]
        print ('download to:'+'/Users/user/Desktop/PDF/'+folderopt+'/'+pdfname)
        urllib.urlretrieve(url,'/Users/user/Desktop/PDF/'+folderopt+'/'+pdfname)
    elif line>i:

        filename = line.rstrip('\n')
        print ('code:'+filename)
        os.mkdir('/Users/user/Desktop/PDF/'+filename)
        global i
        i = i+1
f.close

编辑:我把变量放在for循环之外仍然得到这个

IOError: [Errno 2] No such file or directory: '/Users/user/Desktop/PDF/0/20160412398.pdf'

即使创建了文件夹/ Users / user / Desktop / PDF / 1,i count也没有增加。

将elif语句更改为

elif int(line.rstrip('\n'))>i

仍然无法正常工作

2 个答案:

答案 0 :(得分:0)

这是因为你的循环中的第一行将i设置为0。

尝试

i = 0
for line in f:

而不是

for line in f:
    i = 0

编辑:

此外,i+=1应该在elif条件之外,如此

elif:
    ...
i+=1

elif:
    ...
    i+=1

答案 1 :(得分:0)

  

你在循环中将i设置为0,试试这个:

import re
import os
import urllib
f = open("newfile.txt")
suffix = '.pdf'
i = 0
for line in f:
    folderopt = str(i)

    if suffix in line:
        print('download')
        url = line.rstrip('\n')
        pdfname = url.split('LTN',1)[1]
        print ('download to:'+'/Users/user/Desktop/PDF/'+folderopt+'/'+pdfname)
        urllib.urlretrieve(url,'/Users/user/Desktop/PDF/'+folderopt+'/'+pdfname)
    elif line>i:

        filename = line.rstrip('\n')
        print ('code:'+filename)
        os.mkdir('/Users/user/Desktop/PDF/'+filename)
        global i
        i+= 1
f.close