列出Python中的目录内容

时间:2018-09-23 07:53:08

标签: python directory glob

这里是Python的新手,正在做一个示例练习来列出目录的内容,并发现用我目前的知识水平无法解释的内容。enter image description here

从步骤1,3和2,4看,结果是相同的,但是结果在1,2和3,4之间是不相同的。

5和6相同,但是不会扩展到子文件夹中,我认为这只是glob文本的问题。

但是随后7次抛出错误,而8次给出了正确的结果!

我们如何解释以上结果?

平台:Windows 10 Python版本:3.6.5

代码如下所示

db.collection.aggregate([
  { "$addFields": {
    "TimeStamp": {
      "$dateToString": {
        "format": "%d-%m-%Y",
        "date": { "$dateFromString": { "dateString": "$TimeStamp", "format": "%m-%d-%Y" }}
      }
    }
  }},
  { "$out": "collection_name" }
])

以下是MainMenu类

import MainMenu
from pathlib import Path
import glob


def main():
    menu = MainMenu.MainMenu()
    operation, result = menu.show_main_menu()

    if operation == 1:
        # user chose file listing - result has to be path of the folder
        p = Path(result)
        print("result =", result)
        print("p.resolve() =", p.resolve())
        print("1. list(p.resolve().glob(\"./**/*\")):", list(p.resolve().glob("./**/*")))
        print("2. glob.glob(result + \"./**/*\"):", glob.glob(result + "./**/*"))
        print("3. list(p.resolve().glob(\"**/*\")):", list(p.resolve().glob("**/*")))
        print("4. glob.glob(result + \"/**/*\"):", glob.glob(result + "/**/*"))
        print("5. list(p.resolve().glob(\"**\")):", list(p.resolve().glob("**")))
        print("6. glob.glob(result + \"**\"):", glob.glob(result + "**"))
        print("7. list(p.resolve().glob(\"/**\")):", "Error: Non-relative patterns are unsupported")
        print("8. glob.glob(result + \"/**\"):", glob.glob(result + "/**"))

if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:0)

1对2

list(p.resolve().glob("./**/*"))
glob.glob(result + "./**/*")

如果我们扩展第二个,我们得到

glob.glob("C:\Python\PlayTest\testfolder./**/*")

这不是有效路径,因此失败。使用the slash operator来连接路径,而不是直接操作字符串。

7。 您正在从“ /”中搜索。这意味着它使用的是绝对路径而不是相对路径。如错误消息所述,不支持此操作。(“ /”是Linux系统上的根目录。)