Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.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代码在Ubuntu和MacOS上表现不同_Python_Python 3.x - Fatal编程技术网

Python代码在Ubuntu和MacOS上表现不同

Python代码在Ubuntu和MacOS上表现不同,python,python-3.x,Python,Python 3.x,我正在开发一个flask应用程序,并使用pycharm在我的MacBook上进行大部分开发 最近,我将应用程序部署到远程服务器并运行了一些测试。远程服务器的Ubuntu 16.04运行的是python 3.6(在我的MacBook上也运行相同版本的python) 现在,每次我在远程服务器上测试某个功能时,服务器的磁盘空间就用完了。这是由我为压缩一些文件而实现的某个函数造成的 这是密码 local_dir = 'some_path/' new_zip_file = os.path.join(loc

我正在开发一个flask应用程序,并使用pycharm在我的MacBook上进行大部分开发

最近,我将应用程序部署到远程服务器并运行了一些测试。远程服务器的Ubuntu 16.04运行的是python 3.6(在我的MacBook上也运行相同版本的python)

现在,每次我在远程服务器上测试某个功能时,服务器的磁盘空间就用完了。这是由我为压缩一些文件而实现的某个函数造成的

这是密码

local_dir = 'some_path/'
new_zip_file = os.path.join(local_dir, "{}.zip".format('some_name'))

for root, dirs, files in os.walk(local_dir):
    with zipfile.ZipFile(new_zip_file, 'w') as new_zip:
         for file in files:
             new_zip.write(os.path.join(root, file))
在MacBook上,上述代码块按预期工作。它进入指定的文件夹,找到文件,然后将它们压缩到一个新文件中。zip文件是在找到zip文件内容的同一文件夹中创建的

在Ubuntu上,它进入递归,导致zip文件爆炸


现在我知道如何在ubuntu上解决这个问题,但我的问题是,为什么在两个不同的操作系统上行为会发生变化

哪一行递归<代码>用于文件中的文件:?如果您创建一个只包含最小的
os.walk
,它也会这样做吗?无论如何,这是错误的-如果
local\u dir
包含任何子目录,其内容的.zip将覆盖目录本身中的.zip。至于递归问题,这可能是由于已经存在某个_name.zip,因此被包括在
文件
列表中-检查此问题,在这种情况下跳过
.write()
。我找出了问题出在哪里。虽然我确实在ubuntu中升级了python以匹配我的开发环境,但虚拟环境是在我升级python之前创建的,因此它有python3.5.2的旧版本,而开发环境有python3.6.6。根据报告,zipfile模块有一些变化。我将Ubuntu中的虚拟环境迁移到python3.6.6,代码开始按预期运行。需要用大写字母书写,版本很重要。