Python循环读取和解析目录中的所有内容 class\uuuuu init\uuuuuuu: path=“articles/” files=os.listdir(路径) files.reverse() def迭代(文件、路径): def handleXml(内容): 月份=['','一月'、'二月'、'三月'、'四月'、'五月'、'六月'、'七月'、'八月'、'九月'、'十月'、'十一月'、'十二月'] parse=re.compile('(.*)).findall(内容) day=解析[1][1] 月=月[int(解析[2][1])] dayN=parse[3][1] 年份=解析[4][1] 小时=解析[5][1] min=解析[6][1] amPM=parse[7][1] title=解析[9][1] 作者=解析[10][1] article=解析[11][1] 类别=解析[12][1] 如果len(文件)>5: del文件[5:] 对于文件中的文件: file=“%s%s”%(路径,文件) f=打开(文件“r”) handleXml(f.read()) f、 关闭() 迭代(文件、路径)

Python循环读取和解析目录中的所有内容 class\uuuuu init\uuuuuuu: path=“articles/” files=os.listdir(路径) files.reverse() def迭代(文件、路径): def handleXml(内容): 月份=['','一月'、'二月'、'三月'、'四月'、'五月'、'六月'、'七月'、'八月'、'九月'、'十月'、'十一月'、'十二月'] parse=re.compile('(.*)).findall(内容) day=解析[1][1] 月=月[int(解析[2][1])] dayN=parse[3][1] 年份=解析[4][1] 小时=解析[5][1] min=解析[6][1] amPM=parse[7][1] title=解析[9][1] 作者=解析[10][1] article=解析[11][1] 类别=解析[12][1] 如果len(文件)>5: del文件[5:] 对于文件中的文件: file=“%s%s”%(路径,文件) f=打开(文件“r”) handleXml(f.read()) f、 关闭() 迭代(文件、路径),python,xml,file-io,blogs,Python,Xml,File Io,Blogs,它在开始时运行,如果我检查文件数组,它将包含所有文件名。 但是当我在它们之间循环时,它们不起作用,只显示第一个。 如果我返回file,我只得到前两个,如果我返回parse,即使是在重复的文件上,它也不相同。 所有这些都毫无意义 我正在尝试使用Python创建一个简单的博客,因为我的服务器有一个非常旧的Python版本,所以我不能使用像glob这样的模块,所有内容都需要尽可能的基本 文件数组包含目录中的所有文件,这对我来说已经足够好了。我不需要浏览文章目录中的其他目录 但当我尝试输出解析时,即使是

它在开始时运行,如果我检查文件数组,它将包含所有文件名。 但是当我在它们之间循环时,它们不起作用,只显示第一个。 如果我返回file,我只得到前两个,如果我返回parse,即使是在重复的文件上,它也不相同。 所有这些都毫无意义

我正在尝试使用Python创建一个简单的博客,因为我的服务器有一个非常旧的Python版本,所以我不能使用像glob这样的模块,所有内容都需要尽可能的基本

文件数组包含目录中的所有文件,这对我来说已经足够好了。我不需要浏览文章目录中的其他目录

但当我尝试输出解析时,即使是在重复的文件上,我也会得到不同的结果

谢谢

  • 汤姆

    • 可能是因为:

      class __init__:
          path = "articles/"
          files = os.listdir(path)
          files.reverse()
      
          def iterate(Files, Path):
      
              def handleXml(content):
      
                  months = ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
      
                  parse = re.compile('<(.*?)>(.*?)<(.*?)>').findall(content)
                  day = parse[1][1]
                  month = months[int(parse[2][1])]
                  dayN = parse[3][1]
                  year = parse[4][1]
                  hour = parse[5][1]
                  min = parse[6][1]
                  amPM = parse[7][1]
                  title = parse[9][1]
                  author = parse[10][1]
                  article = parse[11][1]
                  category = parse[12][1]
      
              if len(Files) > 5:
                  del Files[5:]
      
              for file in Files:
                  file = "%s%s" % (Path, file)
                  f = open(file, 'r')
                  handleXml(f.read())
                  f.close()
      
          iterate(files, path)
      
      它还将从原始列表中删除最后5个条目。您可以尝试以下操作,而不是使用
      del

      del Files[5:]
      

      可能是因为:

      class __init__:
          path = "articles/"
          files = os.listdir(path)
          files.reverse()
      
          def iterate(Files, Path):
      
              def handleXml(content):
      
                  months = ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
      
                  parse = re.compile('<(.*?)>(.*?)<(.*?)>').findall(content)
                  day = parse[1][1]
                  month = months[int(parse[2][1])]
                  dayN = parse[3][1]
                  year = parse[4][1]
                  hour = parse[5][1]
                  min = parse[6][1]
                  amPM = parse[7][1]
                  title = parse[9][1]
                  author = parse[10][1]
                  article = parse[11][1]
                  category = parse[12][1]
      
              if len(Files) > 5:
                  del Files[5:]
      
              for file in Files:
                  file = "%s%s" % (Path, file)
                  f = open(file, 'r')
                  handleXml(f.read())
                  f.close()
      
          iterate(files, path)
      
      它还将从原始列表中删除最后5个条目。您可以尝试以下操作,而不是使用
      del

      del Files[5:]
      

      如注释中所述,缺少实际的递归。
      即使它在代码的其他地方,递归调用也是错误的典型地方,因此我建议您仔细检查它


      但是,为什么不使用?它遍历所有路径,无需重新创建(递归)轮子。但是,它已经在2.3中引入,我不知道您的python有多老。

      如注释中所述,实际的递归缺失。
      即使它在代码的其他地方,递归调用也是错误的典型地方,因此我建议您仔细检查它


      但是,为什么不使用?它遍历所有路径,无需重新创建(递归)轮子。但是,它已经在2.3中引入,我不知道您的python有多老。

      您发布的代码没有调用iterate()函数,也没有打印任何内容。请发布完整的代码。此外,缩进看起来是错误的,这在Python中显然非常重要。请尝试修复它,使其与文本编辑器中的完全相同。您发布的代码不调用iterate()函数,也不打印任何内容。请发布完整的代码。此外,缩进看起来是错误的,这在Python中显然非常重要。请尝试修复它,使其与文本编辑器中的完全相同。不起作用,但这是删除两行并保留原始数组的好方法。ThanksDid不起作用,但这是删除两行并保留原始数组的好方法。Thanksmy数组不是问题所在,它是另外一回事。如果我打印数组,它会显示所有文件。你能检查数组的长度吗?我这样问是因为你可能有一个由1-2个字符串元素组成的数组,所有文件名都用空格分隔。我的数组不是问题所在,它是另外一个问题。如果我打印数组,它会显示所有文件。你能检查数组的长度吗?我这样问是因为可能有一个由1-2个字符串元素组成的数组,所有文件名都用空格分隔。