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

Python 将数据写入文件,然后移动到桌面,python,pickle,gedcom,Python,Pickle,Gedcom,我确信这非常简单,但我不知道如何将解析后的结果放入自己的文件中,然后使用python将其移动到我的桌面上。这是到目前为止我的代码。我只想将结果“names”保存为自己的文件,然后将其移动到我的桌面上,但我在任何地方都找不到答案。这是一种不寻常的做法吗 from gedcom.element.individual import IndividualElement from gedcom.parser import Parser import os import shutil import pick

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

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)

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

从pathlib导入路径
pick=Path.home()/‘Desktop’/‘names.pickle’
将pick.open('w')作为pickle文件:
pickle.dump(名称、pickle文件)
与旧的
os.path
API相比,使用文件名稍微容易一些,尽管两者都常用

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

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

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

打开('names.pickle','w')作为pickle文件:
pickle.dump(名称、pickle文件)

此代码在调用用户的当前工作目录中创建一个名为
names.pickle
的文件。操作系统提供了当前工作目录的概念,正是为了实现这一目的。也许还可以查看您是否需要有关如何工作的更多详细信息。

数据现在在哪里?我相信数据会保存到我试图pickle的names变量中,因此我假设它在.py文件中,所有这些代码都是从该文件中获取的。当你对一个文件进行pickle时,它会自动将其保存到其他位置吗?我不太清楚那部分是怎么工作的。谢谢你!那么您是说最佳做法是将文件保存在当前目录中?到底是怎么做到的?还是上述解决方案产生的结果?有没有办法打印一个变量的路径(比如上面我的“名称”变量?)现在就看更新的答案。我不明白你说的“变量路径”是什么意思。文件系统命名空间中不存在变量,因此它们没有路径。如果您的意思是“有没有办法打印文件的绝对路径”,那么
print(pathlib.path(“filename”).resolve())
就是这样做的;您还可以使用遗留的
os.path.abspath(“filename”)
函数作为
print()
的参数。好的,我想我现在开始理解这个概念了。非常感谢您花时间向我解释这一点!我想我正在寻找运行代码以创建另一个文件的输出,该文件看起来像是您使用原始问题的更新答案创建的。为了确保我理解这个pickle.dump(名称,picklefile)将创建一个.pkl格式的文件?然后,如果我想要另一种格式,我会找到一种方法将其转换为.csv或.ged,例如?抱歉,如果这真的是基本的东西。我不熟悉.ged格式,但它看起来应该很容易让您从Python编写该格式。