Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:在我完成从FTP读取后删除文件_Python_Url_Gzip - Fatal编程技术网

Python:在我完成从FTP读取后删除文件

Python:在我完成从FTP读取后删除文件,python,url,gzip,Python,Url,Gzip,我的python脚本从FTP打开一个gzip文件并读取它。每次我运行脚本时,.gz文件都会下载到我的硬盘上(Sites/htdocs文件夹作为python cgi)。我不想将文件下载到硬盘上,或者在执行脚本后删除文件 下面是我的脚本的快照: u = 'http://hapmap.ncbi.nlm.nih.gov/downloads/frequencies/2010-05_phaseIII/' filename1 = 'allele_freqs_chr' + chromosomes[i] + '

我的python脚本从FTP打开一个gzip文件并读取它。每次我运行脚本时,
.gz
文件都会下载到我的硬盘上(Sites/htdocs文件夹作为python cgi)。我不想将文件下载到硬盘上,或者在执行脚本后删除文件

下面是我的脚本的快照:

u = 'http://hapmap.ncbi.nlm.nih.gov/downloads/frequencies/2010-05_phaseIII/'

filename1 = 'allele_freqs_chr' + chromosomes[i] + '_' + populations[0] + '_phase3.3_nr.b36_fwd.txt.gz'
url = u + filename1
try:
    site = urllib.urlretrieve(url,filename1)
except IOError:
    print >> sys.stderr,'Error opening URL.\n'
try: 
    f1 = gzip.open(filename1, 'rb')
except IOError:
    print >> sys.stderr, 'Error opening file1.\n'
    sys.exit(1) 

line=f1.readline()
# ...
非常感谢您的建议。

os.unlink(filename1)
应该可以。另外,在
try:
块中使用
finally:
关闭文件描述符,如下所示:

import os
u = 'http://hapmap.ncbi.nlm.nih.gov/downloads/frequencies/2010-05_phaseIII/'
filename1 = 'allele_freqs_chr' + chromosomes[i] + '_' + populations[0] + '_phase3.3_nr.b36_fwd.txt.gz'
url = u + filename1
try:
    site = urllib.urlretrieve(url,filename1)
except IOError:
    print >> sys.stderr,'Error opening URL.\n'
try: 
    f1 = gzip.open(filename1, 'rb')
except IOError:
    print >> sys.stderr, 'Error opening file1.\n'
    sys.exit(1)
else:
    line = f1.readline()
    # ....
finally:
    try:
        f1.close()
    except:
        pass

os.unlink(filename1)
您可以使用而不是
urllib.urlretrieve

fd = urllib.urlopen(url)
s_data = fd.read()                    # These 2 lines are unfortunately
s_stream = StringIO.StringIO(s_data)  # needed in Python < 3.2
f1 = gzip.GzipFile(fileobj=s_stream)
fd=urllib.urlopen(url)
s_data=fd.read()#不幸的是,这两行
s_stream=StringIO.StringIO(s_数据)#Python<3.2中需要
f1=gzip.gzip文件(fileobj=s_流)

另请参见:(关于为什么必须使用StringIO)

我尝试将urllib.urlretrieve替换为urllib.urlopen。但它不起作用。