如何创建一个链接列表,将当前路径的每个文件夹存储为一个节点,并将这些文件夹的每个文件存储为 Python 上的一个项目?
How can I create a linked list that stores each folder of the current path as a Node and each file of those folders as an item on Python?
假设我在名为 C:\Users\Test
的路径中有以下文件夹:
它们中的每一个都只包含名称不同的图像(PNG 格式)(其中 none 个包含子文件夹)。
如何构建一个 Python 程序,为上面 C:\Users\Test
中的文件夹创建数据结构,双击后看起来像下面的数据结构?
struct the_linked_list{
Color = ['1.png', '2.png', '3.png']
Cuerpo = ['Body.png']
Fondo = ['Background.png']
Ojos = ['eyes1.png', 'eyes2.png', 'eyes3.png']
Pinzas = ['a.png', 'b.png', 'c.png']
Puas = ['x.png', 'y.png'. 'z.png']
}
-假设这些文件夹中的文件名分别是上面示例中提供的名称。
-创建的数据结构必须将其节点名称分别设置为文件夹名称。
我的建议是使用 os.listdir()
函数,其中 returns 指定目录中的文件列表。然后你可以使用它几次来获得你想要在链接列表中的目录列表。然后,遍历此列表,为每次迭代创建一个新对象,并在此目录上调用 os.listdir
以获取文件列表。
这是我所做的实现:
import os
class Node:
def __init__(self, name, files):
self.dir_name = name
self.files = files
self.next = None
def add(head, new_node):
'''Adds new node to end of linked list'''
curr_node = head
while (curr_node.next != None):
curr_node = curr_node.next
curr_node.next = new_node
# Main method
path = input()
list_of_file_contents = os.listdir(path)
head = None
# Get files and add directory to LL
for dir in list_of_file_contents:
path_to_dir = f"{path}\{dir}"
if (os.path.isdir(path_to_dir)):
file_list = os.listdir(path_to_dir)
if (head == None):
head = Node(dir, file_list)
else:
add(head, Node(dir, file_list))
假设我在名为 C:\Users\Test
的路径中有以下文件夹:
它们中的每一个都只包含名称不同的图像(PNG 格式)(其中 none 个包含子文件夹)。
如何构建一个 Python 程序,为上面 C:\Users\Test
中的文件夹创建数据结构,双击后看起来像下面的数据结构?
struct the_linked_list{
Color = ['1.png', '2.png', '3.png']
Cuerpo = ['Body.png']
Fondo = ['Background.png']
Ojos = ['eyes1.png', 'eyes2.png', 'eyes3.png']
Pinzas = ['a.png', 'b.png', 'c.png']
Puas = ['x.png', 'y.png'. 'z.png']
}
-假设这些文件夹中的文件名分别是上面示例中提供的名称。
-创建的数据结构必须将其节点名称分别设置为文件夹名称。
我的建议是使用 os.listdir()
函数,其中 returns 指定目录中的文件列表。然后你可以使用它几次来获得你想要在链接列表中的目录列表。然后,遍历此列表,为每次迭代创建一个新对象,并在此目录上调用 os.listdir
以获取文件列表。
这是我所做的实现:
import os
class Node:
def __init__(self, name, files):
self.dir_name = name
self.files = files
self.next = None
def add(head, new_node):
'''Adds new node to end of linked list'''
curr_node = head
while (curr_node.next != None):
curr_node = curr_node.next
curr_node.next = new_node
# Main method
path = input()
list_of_file_contents = os.listdir(path)
head = None
# Get files and add directory to LL
for dir in list_of_file_contents:
path_to_dir = f"{path}\{dir}"
if (os.path.isdir(path_to_dir)):
file_list = os.listdir(path_to_dir)
if (head == None):
head = Node(dir, file_list)
else:
add(head, Node(dir, file_list))