Python:写入包中另一个目录的正确方法

时间:2012-06-14 20:04:38

标签: python packages abstraction

目前使用以下包结构:

/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中。

  1. 我不确定这应该是包文件的正确层次结构吗?如果将整个项目文件移动到服务器上,那么如何在不使用绝对文件路径的情况下将目录分支中的文本文件创建为文本文件,而不使用绝对文件路径。

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

1 个答案:

答案 0 :(得分:3)

  1. IMO你不应该写入你的包裹。设置代码,以便写入可能位于包外的数据目录。许多代码部署策略都假设您的代码将位于通常不可写的目录中。 (例如,如果它是为常见的Linux发行版打包的,代码将进入/usr/lib/python.../yourpackage/,数据将写入/ var / lib / yourpackage或类似的东西。)
  2. 将您的retrieve.py放在... / data之外,可能放在... / read目录中,或者放在final.py旁边,具体取决于您需要的组织。
  3. 要写入任意位置,只需将完整路径传递给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()