【问题标题】:how to run 2 functions in python如何在 python 中运行 2 个函数
【发布时间】:2022-11-21 19:20:07
【问题描述】:

嗨,我是 python 的新手,我有一个问题,我不知道如何运行这两个函数。有人可以给我指示我该怎么做吗?

import shutil
from pathlib import Path
from xml.etree import ElementTree as ET


 def contains_drone(path):
    tree = ET.parse(path.as_posix())
    root = tree.getroot()
    for obj in root.findall('object'):
        rank = obj.find('name').text
        if rank == 'drone':           
             return True
    return False
    

    def move_drone_files(src='D:\\TomProject\\Images, dst='D:\\TomProject\\Images\\Done'):
    src, dst = Path(src), Path(dst)
    for path in src.iterdir():
       if path.suffix == '.xml' and contains_drone(path):
           print(f'Moving {path.as_posix()} to {dst.as_posix()}')
           shutil.move(path, dst)
       

【问题讨论】:

  • 能详细说一下run 2函数的含义吗?你是说并发吗?你能打电话给move_drone_files()吗?

标签: python


【解决方案1】:

你应该这样做:

import shutil
from pathlib import Path
from xml.etree import ElementTree as ET


 def contains_drone(path):
    tree = ET.parse(path.as_posix())
    root = tree.getroot()
    for obj in root.findall('object'):
        rank = obj.find('name').text
        if rank == 'drone':           
             return True
    return False
    

def move_drone_files(src='D:\TomProject\Images', dst='D:\TomProject\Images\Done'):
    src, dst = Path(src), Path(dst)
    for path in src.iterdir():
       if path.suffix == '.xml' and contains_drone(path):
           print(f'Moving {path.as_posix()} to {dst.as_posix()}')
           shutil.move(path, dst)

if __name__=='__main__':
    move_drone_files()

然后只需使用python3 file.py 执行您的文件,main 中的代码将被执行。

【讨论】:

    【解决方案2】:

    您需要在文件末尾添加if __name__ == "__main__":,以及您要调用的函数:

    import shutil
    from pathlib import Path
    from xml.etree import ElementTree as ET
    
    
    def contains_drone(path):
        tree = ET.parse(path.as_posix())
        root = tree.getroot()
        for obj in root.findall('object'):
            rank = obj.find('name').text
            if rank == 'drone':           
                 return True
        return False
        
    
    def move_drone_files(src='D:\TomProject\Images', dst='D:\TomProject\Images\Done'):
        src, dst = Path(src), Path(dst)
        for path in src.iterdir():
           if path.suffix == '.xml' and contains_drone(path):
               print(f'Moving {path.as_posix()} to {dst.as_posix()}')
               shutil.move(path, dst)
    
    if __name__ == "__main__":
        move_drone_files()
    

    在您的代码中,move_drone_files() 在其自身内部调用了contains_drone(path)(参见if path.suffix == '.xml' and contains_drone(path): 行),因此您似乎只需要在主要部分调用move_drone_files()。然后,您只需要使用如下命令执行 python 脚本:python script.pypython3 script.pypython3.X script.py,具体取决于您安装的 python 版本。

    PD:我修复了您发布的代码中的一些拼写错误和制表符错误

    【讨论】:

      【解决方案3】:

      我猜您的代码中存在语法错误:将 src='D:\TomProject\Images, dst='D:\TomProject\Images\Done' 替换为 src="D:\TomProject\Images", dst="D:\TomProject\Images\Done"

      另外,去掉def move_drone_files(...)前面的四个空格,否则python会报语法错误。

      要调用这些函数之一,您必须键入:

      containsdrone('path/to/file')
      # and
      move_drone_files()
      

      修改后的代码应该是这样的:

      import shutil
      from pathlib import Path
      from xml.etree import ElementTree as ET
      
      
      def contains_drone(path):
          tree = ET.parse(path.as_posix())
          root = tree.getroot()
          for obj in root.findall('object'):
              rank = obj.find('name').text
              if rank == 'drone':           
                   return True
          return False
          
      
      def move_drone_files(src="D:\TomProject\Images", dst="D:\TomProject\Images\Done"):
          src, dst = Path(src), Path(dst)
          for path in src.iterdir():
             if path.suffix == '.xml' and contains_drone(path):
                 print(f'Moving {path.as_posix()} to {dst.as_posix()}')
                 shutil.move(path, dst)
      
      
      containsdrone('path/to/file')
      move_drone_files()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-27
        • 1970-01-01
        • 2020-10-06
        相关资源
        最近更新 更多