2

我需要打开一个文件(例如actions.txt)并将其整个传递给一个列表(例如actions [])

对许多其他文件再次重复相同的操作

actions = greetings = []

with open (os.getcwd() + "/files/" + "actions.txt") as temp  :

    for a in temp :
        actions.append(a)        


with open (os.getcwd() + "/files/" + "greetings.txt") as temp  :        

    for a in temp :
        greetings.append(a)    

问题是在这两种情况下都是打开并读取第一个文件,也许有一个明显的错误但我没有注意到

非常感谢您提前。

我在 Linux Mint 13(很棒)上使用 Python 2.7.3 和出色的 IDE Netbeans

PS:

我试图用“os.chdir”将目录更改为“文件”

也用“temp.close()”关闭对象“temp”

我输入了第二行代码“temp2”而不是“temp”

我不知道还能做什么。

4

1 回答 1

6

您的问题出在这一行:

actions = greetings = []

这一行使两者都引用actions一个列表。请看下面的演示:greetings

>>> a = b = []
>>> a.append(1)
>>> a
[1]
>>> b
[1]
>>>

正如你所看到的,即使我还没有碰过b,它仍然会被1附加到它上面,因为ab是同一个列表。

因此,要解决您的问题,请将一行代码设为两行:

actions = []
greetings = []

或这样做:

actions, greetings = [], []

实际上,正如@abarnert 在评论中所说,你想要的可以像这样简单地完成:

with open(os.getcwd() + "/files/" + "actions.txt") as temp:
    actions = list(temp)
with open(os.getcwd() + "/files/" + "greetings.txt") as temp:        
    greetings = list(temp)
于 2013-10-09T19:45:47.163 回答