Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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并搜索丢失的文件_Python_Xml_File_Replace_Reconnect - Fatal编程技术网

Python:读取xml并搜索丢失的文件

Python:读取xml并搜索丢失的文件,python,xml,file,replace,reconnect,Python,Xml,File,Replace,Reconnect,我希望通过Python重新连接丢失的文件!是否可以读取XML文件并获取标记之间的文件名示例: <Name>A013_C025_08264E.MOV</Name> <Name>A002_C001_BLABLA.MOV</Name> 我们需要在标记中获取名称,然后搜索文件并将其路径放置在中。我会这样做来读取xml文件: from BeautifulSoup import BeautifulStoneSoup xml_file = open("my_

我希望通过Python重新连接丢失的文件!是否可以读取XML文件并获取标记之间的文件名示例:

<Name>A013_C025_08264E.MOV</Name>
<Name>A002_C001_BLABLA.MOV</Name>

我们需要在标记中获取名称,然后搜索文件并将其路径放置在中。

我会这样做来读取xml文件:

from BeautifulSoup import BeautifulStoneSoup

xml_file = open("my_xml_file.xml", "r")

soup = BeautifulStoneSoup(xml_file.read())

print soup.prettify() 
然后,您只需遍历xml即可找到所需内容


然后可以使用os.walk在文件系统中查找文件。

我将使用xml.etree.ElementTree解析xml文件

import xml.etree.ElementTree as ET
import os
import fnmatch
tree = ET.parse('fileName.xml')
root = tree.getroot()


#find all media elements
for media in root.findall('Media'):
    movName = media.find('Title').text
    #find the path to the file
    for root, dirnames, filenames in os.walk('src'):
        for filename in fnmatch.filter(filenames, movName):
            #set the path in the XML file
            media.find('FilePath').text = os.path.join(root, movName)
            #remove the relative path element
            media.remove(RelativePath)
tree.write('fileName.xml)
我还没有测试过,可能有错误

您应该阅读文档以了解更多信息:


是的,这是可能的,您可以发布一段XML吗?要操作XML,您可以查看lxml库或BeautifulSoup。后者可能更便于用户使用。要查看目录,您可以查看os.walk.Explain more。。。您是否有一个包含文件名和路径的XML文件,或者您有多个XML文件,或者。。。不清楚,但如果您提供更多信息,我们很可能会帮助您!我看过你的编辑,但仍然没有多大帮助。名称和路径标记之间的关系是什么?是一个在另一个内,还是它们都在另一个具有已知名称的父标记内?是否存在一对一或一对多或多对一的关系?正如你所看到的,我相信这足以取代,取代,而不是必要的
import xml.etree.ElementTree as ET
import os
import fnmatch
tree = ET.parse('fileName.xml')
root = tree.getroot()


#find all media elements
for media in root.findall('Media'):
    movName = media.find('Title').text
    #find the path to the file
    for root, dirnames, filenames in os.walk('src'):
        for filename in fnmatch.filter(filenames, movName):
            #set the path in the XML file
            media.find('FilePath').text = os.path.join(root, movName)
            #remove the relative path element
            media.remove(RelativePath)
tree.write('fileName.xml)