【问题标题】:How to call .py on all xml files?如何在所有 xml 文件上调用 .py?
【发布时间】:2018-11-23 01:36:54
【问题描述】:

我在 python 脚本中调用.py 来读取.xml 文件。我的代码如下所示:

import os
import sys
import subprocess


subprocess.call(["python", "/home/sky/DBT/test.py", "--host=PC", "--file=/home/sky/data/myfile.xml"])

对于单个 .xml 文件,它可以完美运行。但是当我想在我的所有.xmlfiles 上运行我的.py 时,它不起作用。我试过这个循环:

for f in ("/home/sky/data/*.xml"):
  subprocess.call(["python", "/home/sky/DBT/test.py", "--host=PC", "--file=f"])

但它不适用于我目录中的所有.xml 文件。我的代码有什么问题?

谢谢

【问题讨论】:

    标签: python xml operating-system subprocess sys


    【解决方案1】:

    第一件事:

    1. 在您的 for 循环中,您正在遍历字符串“/home/sky/data/*.xml”。因此,变量 f 指向字符串中的单个字符。
    2. 在“--file=f”中,“f”只是字符串“--file=f”中的一个字符。

    解决你的问题,你应该做类似的事情

    for filename in os.listdir(directory):
    

    其中“目录”是您的文件夹,文件名是您需要的文件。请注意,您应该检查文件名是否为 xml 文件。

    【讨论】:

      【解决方案2】:

      试试:

      import os
      import sys
      import subprocess
      
      path = "/home/sky/data/"
      for filename in os.listdir(path):   #Iterate Your DIR
          if filename.endswith(".xml"):    #Check if file is XML
              subprocess.call(["python", "/home/sky/DBT/test.py", "--host=PC", "--file=/home/sky/data/{0}".format(filename)])   #Execute Command
      

      【讨论】:

      • 您能否告诉我如何在此代码中添加一个条件来读取我的/data/ 目录的新文件(按小时,例如 24 小时前)或从上次执行时间开始? @Rakesh
      猜你喜欢
      • 2018-07-22
      • 2016-12-21
      • 2021-04-12
      • 2022-12-09
      • 2015-03-12
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多