如何避免在';中关闭python文件时创建零字节文件;w';错误导致的模式?
我在Windows7上使用的是Python3.4.1 64位。AFAICS,这对手边的问题不重要,但我已经包含了这些信息,以防万一。以下是我代码的相关部分:如何避免在';中关闭python文件时创建零字节文件;w';错误导致的模式?,python,file-io,python-3.4,Python,File Io,Python 3.4,我在Windows7上使用的是Python3.4.1 64位。AFAICS,这对手边的问题不重要,但我已经包含了这些信息,以防万一。以下是我代码的相关部分: def download_and_save(URL_list, filenames, download_dir): # Process lists for URL, filename in zip(URL_list, filenames): # Generate full path name file_path = down
def download_and_save(URL_list, filenames, download_dir):
# Process lists
for URL, filename in zip(URL_list, filenames):
# Generate full path name
file_path = download_dir + filename
# Open a local file.
with open(file_path, 'w') as local_file:
# Write whatever is at the URL
try:
local_file.write(urllib.request.urlopen(URL).read())
except urllib.request.URLError as e:
if hasattr(e, 'reason'):
print ("We failed to reach the server...")
print(e.reason)
elif hasattr(e, 'code'):
print("The server couldn\'t fullfill the request...")
print("Error code: ", e.code)
当我运行这段代码时,我遇到了一系列错误(getaddrinfo失败-因为输入错误)。当我检查之后保存该文件的目录时,我发现一堆文件具有预期的文件名,但长度为零字节。这是有道理的,因为没有写作发生
我试图弄明白为什么在这种情况下的假设是进行触摸并创建文件,而不是不这样做。更重要的是,我是否可以关闭此触摸行为,以便在关闭时不会创建任何文件?我是否缺少一种更好的方法来完成此操作,从而完全绕过问题?使用
open
函数创建文件。如果不希望在出现错误时创建空文件,请在从服务器获得响应后创建文件:
try:
data = urllib.request.urlopen(URL).read()
with open(file_path, 'w') as local_file:
local_file.write(data)
except urllib.request.URLError as e:
# ... exception handling
open
函数创建文件。如果不希望在出现错误时创建空文件,请在从服务器获得响应后创建文件:
try:
data = urllib.request.urlopen(URL).read()
with open(file_path, 'w') as local_file:
local_file.write(data)
except urllib.request.URLError as e:
# ... exception handling
你可以采取两种方法
你可以采取两种方法
使用open(file_path,'w')作为本地_文件
创建文件时,无论是否写入文件w
如果文件不存在,则创建该文件。使用open(file_path,'w')作为local_file
创建文件时,无论是否写入文件w
如果文件不存在,则创建该文件。谢谢!读完这篇文章后,我很想把我的手掌放在脸上。应该很明显,但我因为某种原因错过了。你认为我应该删除这个问题以保持现场良好的信噪比吗?这是一个相当愚蠢的问题。这个问题很好,你至少已经投了一张赞成票。:)十分钟一过,我就接受你的答复。再次感谢!非常感谢。读完这篇文章后,我很想把我的手掌放在脸上。应该很明显,但我因为某种原因错过了。你认为我应该删除这个问题以保持现场良好的信噪比吗?这是一个相当愚蠢的问题。这个问题很好,你至少已经投了一张赞成票。:)十分钟一过,我就接受你的答复。再次感谢!正当我应该自己想出方法二,哈哈。我不想删除这个文件(有点奇怪),但这是一个非常有效的解决方案。是的,方法二是正确的。我应该自己想出方法二,哈哈。我不想删除这个文件(有点奇怪),但这是一个非常有效的解决方案。是的,方法二是正确的。