View a markdown version of this page

表達式快速參考 - 截止日期雲端

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

表達式快速參考

運算式使用 Python 運算式語法的子集。值具有其中一種類型 bool、int、float、string、range_expr、 path或 list[T]。任務參數具有宣告類型的小寫形式,因此PATH參數是 path值,而CHUNK[INT]任務參數是 range_expr。任何函數也可以在第一個引數上稱為 方法,因此 upper(Param.Name)和 Param.Name.upper() 是相同的。此頁面列出任務範本最常使用的語言部分。如需完整的函數程式庫,請參閱 GitHub 網站上的開啟任務描述函數程式庫。

下列變數可供使用。任務參數會在建立任務時得知,因此會評估僅使用Param值的表達式。任務和工作階段變數僅在工作者上已知,因此使用它們的表達式會在提交時進行類型檢查,並在任務執行時進行評估。

變數 Type 說明
Param.Name 宣告類型 任務參數值。對於 PATH和 LIST[PATH] 參數,已套用路徑映射規則。
RawParam.Name string 路徑映射之前,所提交PATH參數的原始值。在呼叫 之前,請使用它來操作另一個作業系統的路徑apply_path_mapping()。
Task.Param.Name 宣告類型 任務參數值。CHUNK[INT] 參數是 range_expr;list()呼叫它來重複影格。
Task.File.Name, Env.File.Name path 寫入內嵌檔案之工作者上的位置。
Session.WorkingDirectory path 工作階段在工作者上的臨時工作目錄。
Job.Name, Step.Name string 解析的任務名稱和目前的步驟名稱。

下列運算子和函數涵蓋大多數範本邏輯。

Category 運算子和函數 範例
算術 + - * / // % **, abs(), min(), max(), sum(), floor(), ceil(), round() {{ min(Param.FrameRange) }} 和 {{ max(Param.FrameRange) }} 代表影格範圍參數的第一個影格和最後一個影格
比較和邏輯 == != < <= > >=, in, not in, and, or, not, a if test else b {{ 'large' if Param.Epochs >= 100 else 'small' }}
Conversion (轉換) string(), int(), float(), bool(), path(), list(), range_expr() {{ len(list(Task.Param.Frame)) }}
Strings upper()、lower()、strip()、replace()、split()、join()、startswith()、endswith()、zfill()、removeprefix()、removesuffix()、、切片 [start:stop] {{ zfill(Task.Param.Frame, 4) }}
常規表達式 re_match(), re_search(), re_findall(), re_sub(), re_split(), re_escape() {{ re_search(Param.Dataset.stem, r'_v(\d+)')[1] }}
路徑 / 加入、+附加文字、.name、.stem、.suffix、.parent.parts、with_suffix()、with_stem()、、with_number()、 as_posix() apply_path_mapping() {{ Param.OutputPattern.with_number(Task.Param.Frame) }}
清單 len()、索引、[i]、[expr for x in list]sorted()、reversed()、unique()、、flatten()、 range() {{ [Param.OutputDir / f for f in Param.Files] }}
指令碼引號 repr_sh() for bash、 repr_pwsh() for PowerShell、 repr_cmd() for Windows CMD、 repr_py() for Python、 repr_json() for JSON {{ repr_pwsh(list(Task.Param.Frame)) }}
驗證 fail(message) 使用訊息停止建立任務 {{ Param.Count if Param.Count > 0 else fail('Count must be positive') }}

無論名稱包含預留位置或實際號碼,with_number()函數都會取代檔案名稱中的影格號碼。它可辨識雜湊填補,例如 ####、printf 樣式 %04d和一列數字,例如 0001,並將結果填補至相同的寬度。因此,參數值可以是模式或序列的第一個檔案:path('/renders/shot_####.exr')、path('/renders/shot_%04d.exr'),以及 path('/renders/shot_0001.exr') 的所有給予/renders/shot_0072.exrwith_number(72)。當名稱沒有這些值時,函數會將四位數的數字附加到幹。

一些行為與 Python 不同。and 和 or運算子會傳回其中一個運算元,且僅 false和 null 計為 false,因此 0、空字串和空清單不會。這or可讓您為未設定值提供備用: {{ Param.OutputName or Param.InputFile.stem }}會在選用參數為 時使用輸入檔案名稱null,並依指定保留空字串。中的條件a if test else b必須是布林值。整數為 64 位元,溢出是錯誤,而不是無提示包裝。使用 比較不同類型的值==,false而不是錯誤,但 與 int比較float, 與 string比較path。JSON 常值 null、 true和 false與 None、 True和 一起接受False。

如需詳細資訊,請參閱下列資源: