簡體   English   中英

在Python中使用條件'with'語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM