我有一個過程,檢查新的數據,如果它發現任何,寫出到一個文件。我想有一個過程,將文件加載到Amazon S3
然後Redshift
。完全有可能,甚至有可能有時不會有新的數據返回。如果沒有數據寫入文件,我想找到一種Pythonic方法來避免加載到S3/Redshift。處理可能爲空的gzip文件的大部分pythonic方法?
由於我的代碼大量使用generators
,如果返回任何數據,我沒有提前知道的方法。這裏是代碼塊:
with gzip.open(outfile, 'wt') as outf:
writer = DictWriter(
f=outf,
fieldnames=fieldnames,
extrasaction='ignore',
delimiter='|',
escapechar='\\'
)
...attempt to pull data
if stat(outfile).st_size > 0:
mu.load_to_rs(
outfile=outfile,
s3_path='github_scripts/github_commits',
table_name=table,
truncate=True # change for prod
)
else:
logger.info('The load file size was 0 bytes: terminating.')
正如你所看到的,我試圖檢查該文件的os.stat.st_size
,但gzip
PED文件不是0字節。什麼是處理這類問題的最Python方法?
如果文件是空的(儘管gzip不是0字節),它不應該花費太多的處理時間來窺探文件,看看有多少字節/行在裏面...我不知道你還有什麼其他的東西, d知道它是空的,除非所有gzipped空文件的大小相同(非零),然後檢查該大小。 –