[英]Using a conditional 'with' statement in Python
我正在嘗試在Python中處理大字節流。 據我所讀,使用“ with”語句可以防止將臨時數據加載到內存中,這對我來說是一個優勢。
我的問題是我有兩個選項可以從中選擇源數據流:原始數據流或源路徑。
if sourceRef:
with open(sourceRef, 'rb') as ds:
dstreams['master'] = self._generateMasterFile(ds)
else:
with self._validate(source) as ds:
dstreams['master'] = self._generateMasterFile(ds)
沒問題,但是我有更復雜的場景,其中“ with”狀態之后的操作更加復雜,我不想重復它們。
有沒有辦法壓縮這兩個選擇?
謝謝,
克
編輯:我正在使用Python 3。
只要這兩件事一起工作with
個人,你可以內聯if
聲明如下:
with (open(sourceRef, 'rb') if sourceRef else self._validate(source)) as ds:
dstreams['master'] = self._generateMasterFile(ds)
最干凈的解決方案可能是預先定義ds
:
if sourceRef:
ds = open(sourceRef, 'rb')
else:
ds = self._validate(source)
with ds:
dstreams['master'] = self._generateMasterFile(ds)
當您有兩個以上的ds
值時(也可以簡單地事先擴展檢查以確定ds
的值),此方法也可以使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.