我编写了一个代码来gunzip源文件夹中的所有文件。但是我想要检查一下,如果gunzipped文件不存在,那么gunzip就会移动到下一个文件。
source_dir = "/Users/path"
dest_dir = "/Users/path/Documents/path"
for src_name in glob.glob(os.path.join(source_dir, '*.gz')):
base = os.path.basename(src_name)
dest_name = os.path.join(dest_dir, base[:-3])
with: gzip.open(src_name, 'rb') as infile, open(dest_name, 'wb') as outfile:
try:
for line in infile:
print ("outfile: %s" %outfile)
if not os.path.exists(dest_name):
outfile.write(line)
print( "converted: %s" %dest_name)
except EOFError:
print("End of file error occurred.")
except Exception:
print("Some error occurred.")
我使用os.path.exist
来检查文件是否存在,但似乎os.path.exist
在这里不起作用。
答案 0 :(得分:1)
我认为你错放了path.exists
电话。它应该是:
source_dir = "/Users/path"
dest_dir = "/Users/path/Documents/path"
for src_name in glob.glob(os.path.join(source_dir, '*.gz')):
base = os.path.basename(src_name)
dest_name = os.path.join(dest_dir, base[:-3])
if not os.path.exists(dest_name):
with gzip.open(src_name, 'rb') as infile, open(dest_name, 'wb') as outfile:
try:
for line in infile:
print("outfile: %s" % outfile)
outfile.write(line)
print("converted: %s" % dest_name)
except EOFError:
print("End of file error occurred.")
except Exception:
print("Some error occurred.")
同样@MadPhysicist强调: "在打开后进行检查(...,' wb')(正如您在原始代码中所做的那样),将始终说该文件存在,因为这是开放的(..., ' w')"
最重要的是,即使你做了一些其他的检查是否有必要进行枪械切割,在你放置它的地方进行检查将对每一行进行检查,这完全是多余的,因为结果将是相同的所有行(存在/不存在)。