创建文件夹并将文件保存到该文件夹​​中,然后提取 zip 文件

Posted

技术标签:

【中文标题】创建文件夹并将文件保存到该文件夹​​中,然后提取 zip 文件【英文标题】:Create folder and save file into that folder and then extract zip file 【发布时间】:2018-05-29 11:10:41 【问题描述】:

我有这段代码,它根据登录的用户创建一个文件夹,并将他们上传的文件保存到该文件夹​​中。用户上传的文件是一个 zip 文件,我想在上传时解压。

问题是这段代码不起作用,因为它在创建后退出了文件夹,所以它出现了一个 IO 错误,说它找不到文件。

我将如何继续解决这个问题?

def user_directory_path(instance, filename):
    # file will be uploaded to MEDIA_ROOT/user_<id>/<filename>
    zip = ZipFile(filename)
    return 'user_0/1'.format(instance.user, filename) and zip.extract()

异常值:

[Errno 2] 没有这样的文件或目录:'UploadedFile.zip'

【问题讨论】:

【参考方案1】:

几个建议:

您必须先创建“user_0”目录 os.join() 是创建路径的规范 你的函数返回一个布尔值,不确定它是你想要的

【讨论】:

谢谢。我根据你的回答做了一些。 createfolder = os.path.join('C:/', 'Users', 'myuser', 'Desktop', 'Project', 'Fileuploads', time_stamp,) mkdir(createfolder) - 但它返回那些双斜杠“\ \" 在给我一个 IO 错误的路径中。你知道如何解决这个问题吗? 双重冲突完全没问题,这是路径的标准表示。在 Windows 上,字母驱动器存在一些问题,这可能会导致问题 docs.python.org/3.6/library/os.path.html#os.path.join 为简单起见,您可以尝试:folder = os.path.join('C:\\Users\\myuser\\Desktop\\Project\\Fileuploads', str(time_stamp)) 是的,刚刚注意到。这不会发生在我的 Ubuntu 实例上。 我仍然找不到文件,即使它提到了完整的正确路径

以上是关于创建文件夹并将文件保存到该文件夹​​中,然后提取 zip 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何从嵌入式资源中提取文件并将其保存到磁盘?

允许用户修改从终端文件中提取的字符串并保存回文件

在 PHP 中创建文件并将其上传到 FTP 服务器而不在本地保存

使用正则表达式提取文件路径并将其保存在python中

从 .txt 中提取以空格分隔的列并添加以保存在新数据框中

从 mp4 中提取音轨并将其保存到可播放的音频文件中