diff --git a/setup.py b/setup.py
index a56b672..7637a9c 100644
--- a/setup.py
+++ b/setup.py
@@ -85,7 +85,7 @@
                 f"shasum -a 512 {target_name} > {target_name}.sha512"
             )
         except DistutilsExecError as e:
-            self.warn("Make dist and sign failed: %s" % e)
+            self.warn(f"Make dist and sign failed: {e}")
 
 
 setup(
diff --git a/src/pydolphinscheduler/core/yaml_workflow.py b/src/pydolphinscheduler/core/yaml_workflow.py
index a445534..d7c57f1 100644
--- a/src/pydolphinscheduler/core/yaml_workflow.py
+++ b/src/pydolphinscheduler/core/yaml_workflow.py
@@ -63,8 +63,8 @@
         """Use $ENV{env_name} to load environment variable "env_name"."""
         if "$ENV" in string_param:
             key = re.findall(r"\$ENV\{(.*?)\}", string_param)[0]
-            env_value = os.environ.get(key, "$%s" % key)
-            string_param = string_param.replace("$ENV{%s}" % key, env_value)
+            env_value = os.environ.get(key, f"${key}")
+            string_param = string_param.replace(f"$ENV{{{key}}}", env_value)
         return string_param
 
     @staticmethod
@@ -119,7 +119,7 @@
     all_task_types = {type_.capitalize(): type_ for type_ in tasks.__all__}
     task_type_cap = task_type.capitalize()
     if task_type_cap not in all_task_types:
-        raise PyDSTaskNoFoundException("cant not find task %s" % task_type)
+        raise PyDSTaskNoFoundException(f"cant not find task {task_type}")
 
     standard_name = all_task_types[task_type_cap]
     return getattr(tasks, standard_name)
@@ -248,7 +248,7 @@
                 workflow_path, self._base_folder
             )
             workflow_name = YamlWorkflow.parse(possible_path)
-            content = content.replace('$WORKFLOW{"%s"}' % workflow_path, workflow_name)
+            content = content.replace(f'$WORKFLOW{{"{workflow_path}"}}', workflow_name)
 
         return content
 
@@ -313,7 +313,7 @@
         condition_datas = task_params["condition"]
         conditions = []
         for condition_data in condition_datas:
-            assert "task" in condition_data, "task must be in %s" % condition_data
+            assert "task" in condition_data, f"task must be in {condition_data}"
             task_name = condition_data["task"]
             condition_string = condition_data.get("condition", None)
 
@@ -372,7 +372,7 @@
             elif op.lower() == "or":
                 cls = Or
             else:
-                raise Exception("OP must be in And or Or, but get: %s" % op)
+                raise Exception(f"OP must be in And or Or, but get: {op}")
             return cls
 
         second_cond_ops = []
@@ -380,8 +380,8 @@
             second_op = first_group["op"]
             task_ops = []
             for condition_data in first_group["groups"]:
-                assert "task" in condition_data, "task must be in %s" % condition_data
-                assert "flag" in condition_data, "flag must be in %s" % condition_data
+                assert "task" in condition_data, f"task must be in {condition_data}"
+                assert "flag" in condition_data, f"flag must be in {condition_data}"
                 task_name = condition_data["task"]
                 flag = condition_data["flag"]
                 task = name2task[task_name]
@@ -448,7 +448,7 @@
             elif op.lower() == "or":
                 cls = Or
             else:
-                raise Exception("OP must be in And or Or, but get: %s" % op)
+                raise Exception(f"OP must be in And or Or, but get: {op}")
             return cls
 
         def create_dependent_item(source_items):
diff --git a/src/pydolphinscheduler/resources_plugin/github.py b/src/pydolphinscheduler/resources_plugin/github.py
index 369d377..f103d75 100644
--- a/src/pydolphinscheduler/resources_plugin/github.py
+++ b/src/pydolphinscheduler/resources_plugin/github.py
@@ -90,7 +90,7 @@
             "Content-Type": "application/json; charset=utf-8",
         }
         if self.access_token is not None:
-            headers.setdefault("Authorization", "Bearer %s" % self.access_token)
+            headers.setdefault("Authorization", f"Bearer {self.access_token}")
         self.get_git_file_info(path)
         response = requests.get(
             headers=headers,
diff --git a/src/pydolphinscheduler/resources_plugin/gitlab.py b/src/pydolphinscheduler/resources_plugin/gitlab.py
index 323b399..d1ee80b 100644
--- a/src/pydolphinscheduler/resources_plugin/gitlab.py
+++ b/src/pydolphinscheduler/resources_plugin/gitlab.py
@@ -89,7 +89,7 @@
             "password": self.password,
         }
         host = self._git_file_info.host
-        resp = requests.post("%s/oauth/token" % host, data=data)
+        resp = requests.post(f"{host}/oauth/token", data=data)
         oauth_token = resp.json()["access_token"]
         return oauth_token
 
diff --git a/tests/core/test_yaml_workflow.py b/tests/core/test_yaml_workflow.py
index 42999d0..083f822 100644
--- a/tests/core/test_yaml_workflow.py
+++ b/tests/core/test_yaml_workflow.py
@@ -52,7 +52,7 @@
 def test_parse_tool_env_not_exist():
     """Test parsing the not exist environment variable."""
     key = "THIS_ENV_NOT_EXIST_0000000"
-    string_param = "$ENV{%s}" % key
+    string_param = f"$ENV{{{key}}}"
     expect = "$" + key
     assert expect == ParseTool.parse_string_param_if_env(string_param)
 
@@ -94,7 +94,7 @@
     with open(path) as f:
         expect = "".join(f)
 
-    string_param = '$FILE{"%s"}' % file_name
+    string_param = f'$FILE{{"{file_name}"}}'
     content_ = ParseTool.parse_string_param_if_file(string_param, base_folder=folder)
 
     assert expect == content_
