代码之家  ›  专栏  ›  技术社区  ›  Mario

错误2在2个拆分上没有这样的文件或目录

  •  0
  • Mario  · 技术社区  · 8 年前

    我有这个密码

    import urllib.request
    fw = open("myfile.txt", "r")
    red = fw.read()
    line = red.split("\n")
    blue = line.split("@")[0]
    i=0
    while i<len(blue):
        try:
            try code is here
            try:
                try code is here
            except:
                print(blue[i] + " is " + "having e1")
        except:
            print(blue[i] + " is " + "having e2")
    
        i+=1
    

    我得到了

    错误2没有这样的文件或目录

    当我试图运行我的文件时。但是,当我移除线路时 blue = line.split("@") 它工作得很好。

    我想做的是在 myfile.txt -所以我分手了 \n 首先要得到文件的一行,然后我要得到之前的字符 @ 把它放在绳子上 blue

    我不明白为什么当我搬走的时候 蓝色=线。拆分(“@”)

    任何帮助都将不胜感激。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Austin    8 年前
    line = red.split("\n") 
    blue = line.split("@")[0]
    

    当你这样做的时候 red.split("\n") ,您将获得一个行列表。所以 line 在代码中基本上是一个行列表。

    证明:

    >>> red = '''\                                             
    ... This is line 1                                          
    ... This is line 2                                         
    ... This is line 3'''                                       
    >>> red.split('\n')                                         
    ['This is line 1', 'This is line 2', 'This is line 3']
    

    你不能表演 split 在名单上。 取而代之的是, 线 对它进行拆分。

    这是一个 列表理解 处理问题的方式:

    blue = [x.split('@')[0] for x in line]
    

    在上面的代码中,我们在 线 (这是已经解释过的行列表)。在每次迭代中, x 从中取出每个值 线 是的。 取一行,对其进行拆分,然后在下一次迭代中,取列表中的下一行,拆分并继续到最后。