Python 正在将字符串列表写入txt文件,但该文件为空,为什么?

Python 正在将字符串列表写入txt文件,但该文件为空,为什么?,python,list,for-loop,python-3.x,Python,List,For Loop,Python 3.x,我的代码出了什么问题?我正在尝试编写一个包含所有jpg图片的txt文件 从当天的天文学图片中,但文件APODImgs.txt是空的。。。 mf列表有时是空的也许这是我的问题 APODLinks.txt包含如下URL: import re, urllib.request patern = re.compile(r'image/\w*\W*\w*\.\jpg', re.I|re.M) file = open('APODLinks.txt','r') rf = file.read() a = rf

我的代码出了什么问题?我正在尝试编写一个包含所有jpg图片的txt文件 从当天的天文学图片中,但文件APODImgs.txt是空的。。。 mf列表有时是空的也许这是我的问题

APODLinks.txt包含如下URL:

import re, urllib.request

patern = re.compile(r'image/\w*\W*\w*\.\jpg', re.I|re.M)

file = open('APODLinks.txt','r')
rf = file.read()
a = rf.split('\n')
file.close()


def lic(li):
    if not li:
        pass
    else:
        print(li[0])
        f.write('http://apod.nasa.gov/apod/%s\n' % li[0])


def main():
    for i in range(len(a)):
        ur = urllib.request.urlopen(a[i])
        mf = re.findall(patern, str(ur.read()))
        lic(mf)

f = open('APODImgs.txt','w')
main()
f.close()
apod.nasa.gov/apod/ap140815.html
apod.nasa.gov/apod/ap140814.html
apod.nasa.gov/apod/ap140813.html
7000行URL

APODImgs.txt必须如下所示:

import re, urllib.request

patern = re.compile(r'image/\w*\W*\w*\.\jpg', re.I|re.M)

file = open('APODLinks.txt','r')
rf = file.read()
a = rf.split('\n')
file.close()


def lic(li):
    if not li:
        pass
    else:
        print(li[0])
        f.write('http://apod.nasa.gov/apod/%s\n' % li[0])


def main():
    for i in range(len(a)):
        ur = urllib.request.urlopen(a[i])
        mf = re.findall(patern, str(ur.read()))
        lic(mf)

f = open('APODImgs.txt','w')
main()
f.close()
apod.nasa.gov/apod/ap140815.html
apod.nasa.gov/apod/ap140814.html
apod.nasa.gov/apod/ap140813.html

请帮助我并为我的英语感到抱歉…

很可能
not li
lic
中总是正确的,因为您的regexp不匹配

要解决此问题,请打印HTTP响应正文:

apod.nasa.gov/apod/image/1408/Persei93_1abolfath.jpg
apod.nasa.gov/apod/image/1408/Supermoon_20140810.JPG
apod.nasa.gov/apod/image/1408/m57_nasagendler_3000.jpg
apod.nasa.gov/apod/image/1408/HebesChasma_esa_1024.jpg
...

我更改了我的代码,它就工作了

urr = urllib.request.urlopen(a[i]).read()
print repr(urr)
mf = re.findall(patern, urr)
print repr(mf)
lic(mf)

它不会影响您的模式,但是
'\jpg'
中的
'j'
不需要转义。我复制了您的代码,并使用您的示例文件进行了尝试。当我在APODLinks.txt中的链接开头添加“http://”时,它似乎起到了作用。另外,您可以使用a=file.readlines()我的regexp很好。。。某些URL具有其他格式的视频或图像。因为我的名单是空的。。。当我运行脚本时,行print(li[0])可以打印出所有ULR,但APODImgs.txt是空的…在
f.write(…)
之后添加一个
f.flush()
调用,并在其上方添加一个
print('WRITING:'+repr(li[0])
。那么,您的程序的确切控制台输出是什么,文件的大小是多少?您确定在程序运行时没有试图查看该文件吗?你确定没有在程序完成之前中止它吗?您确定程序没有因为未捕获的异常而中止吗?