本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
表達式快速參考
運算式使用 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. |
宣告類型 | 任務參數值。對於 PATH和 LIST[PATH] 參數,已套用路徑映射規則。 |
RawParam. |
string |
路徑映射之前,所提交PATH參數的原始值。在呼叫 之前,請使用它來操作另一個作業系統的路徑apply_path_mapping()。 |
Task.Param. |
宣告類型 | 任務參數值。CHUNK[INT] 參數是 range_expr;list()呼叫它來重複影格。 |
Task.File.,
Env.File. |
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,
|
{{ '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()、、切片 [ |
{{ 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()、索引、[、[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( 使用訊息停止建立任務 |
{{ 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,並依指定保留空字串。中的條件必須是布林值。整數為 64 位元,溢出是錯誤,而不是無提示包裝。使用 比較不同類型的值a if test else b==,false而不是錯誤,但 與 int比較float, 與 string比較path。JSON 常值 null、 true和 false與 None、 True和 一起接受False。
如需詳細資訊,請參閱下列資源:
-
GitHub 網站上的開放任務描述表達式語言
– 文法、類型系統、評估規則,以及每個具有其簽章的運算子和函數。 -
將表達式新增至任務範本 – 將表達式新增至範本。