1

当前使用以下包结构:

/package
    __init__.py
    final.py
    /write
        __init__.py
        write.py
    /data
        backup.txt
        backup1.txt
        backup2.txt

final.py 导入write.py,应该可以回一个目录,将一系列备份的.txt 文件写入/data。

final.py 应该能够在另一个调用期间进入 /data并访问备份文件,因此需要将信息保存在 /data 中。

  1. 我不确定这应该是包文件的正确层次结构吗?/write 如何在不使用绝对文件路径的情况下在与自身分开的目录分支中创建文本文件,以防整个项目文件被移动到服务器上。

  2. 将retrieve.py添加到/data中是否会错误(一旦创建了backup.txt文件)它会以某种数据结构返回.txt文件并使/data成为一个包,或者(2)应该final.py直接输入 /data 并检索文本文件。

4

1 回答 1

3
  1. IMO,您不应该将其写入您的包裹中。设置您的代码,以便您写入可能在您的包之外的数据目录。许多代码部署策略假定您的代码将位于通常不可写的目录中。(例如,如果它是为常见的 linux 发行版打包的,代码将进入 /usr/lib/python.../yourpackage/ 并且数据将写入 /var/lib/yourpackage,或类似的东西。)
  2. 将您的retrieve.py 放在.../data 之外,可能在.../read 目录中,或者放在final.py 旁边,具体取决于您需要的组织。

要写入任意位置,只需将完整路径传递给open. 例如,假设您将数据目录的路径存储在一个常量中:

DATA_PATH = '/var/lib/mypackage'

def backup():
    f = open(os.path.join(DATA_PATH, 'backup.txt'), 'w')
    f.write('some backup data...')
    f.close()
于 2012-06-14T20:22:47.103 回答