Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在所有xml文件上调用.py?_Python_Xml_Operating System_Subprocess_Sys - Fatal编程技术网

Python 如何在所有xml文件上调用.py?

Python 如何在所有xml文件上调用.py?,python,xml,operating-system,subprocess,sys,Python,Xml,Operating System,Subprocess,Sys,我在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文件,它可以完美地工作。但是当我想在所有.xml文件上运行.py时,它就不起作用了。我试过这个循环: for f in ("

我在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
文件,它可以完美地工作。但是当我想在所有
.xml
文件上运行
.py
时,它就不起作用了。我试过这个循环:

for f in ("/home/sky/data/*.xml"):
  subprocess.call(["python", "/home/sky/DBT/test.py", "--host=PC", "--file=f"])
但它并不适用于我目录中的所有
.xml
文件。我的代码有什么问题

谢谢

试试:

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
第一件事:

  • 在for循环中,迭代字符串“/home/sky/data/*.xml”。因此,变量f指向字符串中的单个字符
  • 在“-file=f”中,“f”只是字符串“-file=f”中的一个字符
  • 解决你的问题,你应该这样做

    for filename in os.listdir(directory):
    

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

    您能告诉我如何在此代码中添加一个条件,以便只读取我的
    /data/
    目录中的新文件(按小时,例如24小时前)或上次执行时的文件吗@拉凯什