0

我确信这真的很简单,但我不知道如何将解析结果放入自己的文件中,然后使用 python 将其移动到我的桌面。到目前为止,这是我的代码。我只想将结果“名称”保存为自己的文件,然后将其移动到我的桌面,但我无法在任何地方找到答案。这是一种不常见的做法吗?

from gedcom.element.individual import IndividualElement
from gedcom.parser import Parser
import os
import shutil
import pickle


# Path to your `.ged` file
file_path = '/Users/Justin/Desktop/Lienhard_Line.ged'

# Initialize the parser
gedcom_parser = Parser()

# Parse your file
gedcom_parser.parse_file(file_path, False)

root_child_elements = gedcom_parser.get_root_child_elements()

# Iterate through all root child elements
for element in root_child_elements:

    # Is the `element` an actual `IndividualElement`? (Allows usage of extra functions such as `surname_match` and `get_name`.)
    if isinstance(element, IndividualElement):

        # Get all individuals whose surname matches "Doe"
        if element.surname_match('Lienhard'):

            # Unpack the name tuple
            (first, last) = element.get_name()
            names = (first + " " + last)
            
            pickle.dumps(names)
4

1 回答 1

1

将文件保存到一个位置,然后将其移动到另一个位置,而不是通常的方式,不。只需保存到最终位置。

from pathlib import Path

pic = Path.home() / 'Desktop' / 'names.pickle'
with pic.open('w') as picklefile:
    pickle.dump(names, picklefile)

pathlib比旧 API 更容易处理文件名os.path,尽管两者都很常用。

写然后重命名有一些用处;如果您需要绝对确保您的数据保存在某个地方,则将其保存到一个临时文件中,直到它可以重命名为其最终名称是一种相当常见的技术。但在这种情况下,首先保存到不同的位置似乎只会引入脆性。

以上假设您的Desktop主目录中有一个名为的目录,这通常是面向初学者的系统的默认设置。为了完全健壮,如果目录不存在,代码应该创建目录,或者可能只是保存到您的主目录。

实际上,对于大多数用途而言,更好的约定是始终保存在当前目录中,并让用户从那里获取它。另一个目录中的硬编码路径只会增加混乱和不确定性。

with open('names.pickle', 'w') as picklefile:
    pickle.dump(names, picklefile)

此代码创建一个names.pickle在调用用户的当前工作目录中调用的文件。操作系统正是为此目的提供了当前工作目录的概念。如果您需要有关其工作原理的更多详细信息,也许还可以查看./ 和 ~/ 之间的区别。

于 2021-03-23T05:31:53.240 回答