Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
没有完整路径的python文件_Python_Django_Tar - Fatal编程技术网

没有完整路径的python文件

没有完整路径的python文件,python,django,tar,Python,Django,Tar,我制作了一个如下的小脚本来读取一组文件并对它们进行tar,它可以很好地接受压缩文件在解压缩时包含文件的完整路径。有没有一种不用目录结构的方法 compressor = tarfile.open(PATH_TO_ARCHIVE + re.sub('[\s.:"-]+', '', str(datetime.datetime.now())) + '.tar.gz', 'w:gz') for file in os.listdir(os.path.join(settings.MEDIA_ROO

我制作了一个如下的小脚本来读取一组文件并对它们进行tar,它可以很好地接受压缩文件在解压缩时包含文件的完整路径。有没有一种不用目录结构的方法

compressor = tarfile.open(PATH_TO_ARCHIVE + re.sub('[\s.:"-]+', '', 
    str(datetime.datetime.now())) + '.tar.gz', 'w:gz')

for file in os.listdir(os.path.join(settings.MEDIA_ROOT, PATH_CSS_DB_OUT)):
    compressor.add(os.path.join(settings.MEDIA_ROOT, PATH_CSS_DB_OUT) + file)

compressor.close()

我创建了一个上下文管理器,用于更改当前工作目录,以便使用tar文件处理此操作

import contextlib
@contextlib.contextmanager
def cd_change(tmp_location):
    cd = os.getcwd()
    os.chdir(tmp_location)
    try:
        yield
    finally:
        os.chdir(cd)
然后,将所有内容打包到您的案例中:

with cd_change(os.path.join(settings.MEDIA_ROOT, PATH_CSS_DB_OUT)):
    for file in os.listdir('.'):
        compressor.add(file)
看看签名:

。。。如果给定,
arcname
为存档中的文件指定替代名称


谢谢格兰特,我感谢你在这方面的帮助。它成功了,我早些时候发布了另一个问题,你看起来像是在另一个问题上提供帮助的人。非常感谢