将数据写入文件然后移动到桌面

问题描述

我确定这真的很简单,但我不知道如何将解析的结果放入自己的文件中,然后使用 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)

解决方法

将文件保存到一个位置,然后将其移动到另一个位置,这不是通常的做法,不是。只需保存到最终位置即可。

from pathlib import Path

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

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

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

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

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

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

此代码在调用用户的当前工作目录中创建一个名为 names.pickle 的文件。为此,操作系统提供了当前工作目录的概念。如果您需要有关其工作原理的更多详细信息,请参阅 Difference between ./ and ~/