Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 属性错误:';gzip文件';对象没有属性';下一个';_Python_Python 3.x - Fatal编程技术网

Python 属性错误:';gzip文件';对象没有属性';下一个';

Python 属性错误:';gzip文件';对象没有属性';下一个';,python,python-3.x,Python,Python 3.x,我将非常感谢你的帮助。下面我从代码的这一部分得到一条错误信息,我想用它来阐明在克罗恩病和溃疡性结肠炎条件下的差异表达基因,来自affymetrix微阵列分析(原始数据链接为)。但当我运行此代码时: import gzip import numpy as np """ Read in a SOFT format data file. The following values can be exported: GID : A list of gene identifiers of length

我将非常感谢你的帮助。下面我从代码的这一部分得到一条错误信息,我想用它来阐明在克罗恩病和溃疡性结肠炎条件下的差异表达基因,来自affymetrix微阵列分析(原始数据链接为)。但当我运行此代码时:

import gzip
import numpy as np

"""
Read in a SOFT format data file.  The following values can be exported:

GID : A list of gene identifiers of length d
SID : A list of sample identifiers of length n
STP : A list of sample descriptions of length d
X   : A dxn array of gene expression values
"""

fname = "../Anchang Charles/GDS1615_full.soft.gz"
with gzip.open(fname) as fid:
    SIF = {}
    for line in fid:
        if line.startswith(line, len("!dataset_table_begin")):
            break
        elif line.startswith(line, len("!subject_description")):
            subset_description = line.split("=")[1].strip()
        elif line.startswith(line, len("!subset_sample_id")):
            subset_ids = [x.strip() for x in subset_ids]
            for k in subset_ids:
                SIF[k] = subset_description
                  #.next().split("\t")
    SID = fid.next().split("\t")
    I = [i for i,x in enumerate(SID) if x.startswith("GSM")]
    SID = [SID[i] for i in I]
    STP = [SIF[k] for k in SID]
我收到一条错误消息,上面写着

回溯(最近一次呼叫最后一次):

文件“”,第1行,在 运行文件('C:/Users/Anchang Charles/new affymetrix.py',wdir='C:/Users/Anchang Charles')

文件“C:\Anaconda\lib\site packages\spyder\utils\site\sitecustomize.py”,第866行,在runfile中 execfile(文件名、命名空间)

文件“C:\Anaconda\lib\site packages\spyder\utils\site\sitecustomize.py”,第102行,在execfile中 exec(编译(f.read(),文件名,'exec'),命名空间)

文件“C:/Users/Anchang Charles/new affymetrix.py”,第1行,在 从affymetrix导入X、GID、STP、SID、UC、CD

文件“C:\Users\Anchang Charles\affymetrix.py”,第26行,在 SID=fid.next().split(“\t”)


AttributeError:'GzipFile'对象没有属性'next'

在Python 3中,
迭代器。next()
已替换为
迭代器。
,但您应该使用内置的
next
函数调用它,如下所示:

next(iterator)
因此,请尝试:

next(fid).split("\t")
阅读更多关于它的文章

这一变化背后的原因关键是:

使用双下划线会为名称创建一个单独的名称空间 这是Python语言定义的一部分,因此程序员 可以自由创建以 字母,不必担心会与具有 语言定义的目的。(与保留关键字冲突仍然是一个问题 问题,但至少这会立即产生语法错误。)

迭代器上下一个方法的命名是一个例外 惯例。不包含对下一个函数的显式调用的代码 尽管如此,方法仍然会受到此类事件的影响 方法。因此,本PEP建议迭代器应具有
\uuuuuuuuuuuuuuuu
方法,而不是
next
方法(语义没有变化)


感谢您的回复…替换为下一个(fid)。拆分(“\t”)将生成此错误消息:StopIteration@Charles这增加了使代码2/3兼容的额外好处…替换为:fid.\uuuu next\uuuu().split(“\t”)给予:StopIteration@Charles不要直接使用
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。但是它给了您
StopIteration
,因为迭代器已经用完了。这是另一个bug。@Charles,这很有意义,因为您在for循环中遍历整个文件后调用了它。不知道你期待什么。。。