Gunzip Python中源目录中存在的所有文件

时间:2017-09-22 13:36:24

标签: python for-loop web-scraping gunzip

我编写了一个代码来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在这里不起作用。

1 个答案:

答案 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')"

最重要的是,即使你做了一些其他的检查是否有必要进行枪械切割,在你放置它的地方进行检查将对每一行进行检查,这完全是多余的,因为结果将是相同的所有行(存在/不存在)。