小编Eth*_*ite的帖子

ZipFile.testzip()在Python 2和Python 3上返回不同的结果

使用zipfile模块在Python中解压缩大型数据文件在Python 2上正常工作,但在Python 3.6.0上产生以下错误:

BadZipFile: Bad CRC-32 for file 'myfile.csv'

我将此跟踪到错误处理代码检查CRC值.

ZipFile.testzip()在Python 2上使用什么都不返回(所有文件都没问题).在Python 3上运行它会返回'myfile.csv'指示该文件的问题.

在Python 2和Python 3上重现的代码(涉及300 MB下载,抱歉):

import zipfile
import urllib
import sys

url = "https://de.iplantcollaborative.org/anon-files//iplant/home/shared/commons_repo/curated/Vertnet_Amphibia_Sep2016/VertNet_Amphibia_Sept2016.zip"

if sys.version_info >= (3, 0, 0):
    urllib.request.urlretrieve(url, "vertnet_latest_amphibians.zip")
else:
    urllib.urlretrieve(url, "vertnet_latest_amphibians.zip")

archive = zipfile.ZipFile("vertnet_latest_amphibians.zip")
archive.testzip()
Run Code Online (Sandbox Code Playgroud)

有没有人理解为什么存在这种差异,以及是否有办法让Python 3使用以下方法正确提取文件:

archive.extract("vertnet_latest_amphibians.csv")
Run Code Online (Sandbox Code Playgroud)

python unzip python-2.x zipfile python-3.x

15
推荐指数
2
解决办法
1940
查看次数

MATLAB脚本是否可能根据正在执行的操作系统的不同而表现不同?

我在Linux和Windows XP上运行MATLAB.我的文件在我使用的所有计算机中同步,但由于Linux和Windows之间的目录结构不同,我必须为不同的操作系统分别设置导入和导出行.目前我只是为错误的操作系统注释掉了这一行,但我想知道是否有可能写下这样的内容:

if OS == Windows
    datafile = csvread('C:\Documents and Settings\Me\MyPath\inputfile.csv');
else
    datafile = csvread('/home/Me/MyPath/inputfile.csv');
end
Run Code Online (Sandbox Code Playgroud)

这也是一个更普遍的问题,适用于需要使用MATLAB执行系统命令的情况system('command').

matlab operating-system cross-platform

6
推荐指数
1
解决办法
3415
查看次数