Errno 2 2拆分上没有这样的文件或目录

时间:2018-06-24 11:24:34

标签: python

我有这个代码

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

我得到

  

Errno 2没有这样的文件或目录

当我尝试运行文件时。但是,当我删除行blue = line.split("@")时,它工作正常。

我想做的是在myfile.txt的所有行上重复此代码-因此我先拆分\n以获得文件的一行,然后我想获取{{ 1}},然后将其放在字符串@

当我删除blue

时,我无法理解它为什么起作用

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

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。 相反,获取line的每个项目并对其进行分割。

这是一种 list-comprehension 处理问题的方法:

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

在上面的代码中,我们遍历line中的每个项目(如前所述,这是行的列表)。在每次迭代中,x将从line中取出每个值。 x占一行,然后进行拆分,然后在下一次迭代时,从列表中获取下一行,进行拆分并一直持续到结束。