打开两个不同的代码行并读取相同的文件

Dan*_*Dcs 2 python file append

我需要打开一个文件(例如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)    
Run Code Online (Sandbox Code Playgroud)

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

非常感谢你提前.

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

PS:

我试图用"os.chdir"将目录更改为"files"

还使用"temp.close()"关闭对象"temp"

我输入第二行代码"temp2"而不是"temp"

我不知道还能做什么.

iCo*_*dez 6

你的问题在于这一行:

actions = greetings = []
Run Code Online (Sandbox Code Playgroud)

该行生成actions并且greetings都引用相同的列表.请参阅下面的演示:

>>> a = b = []
>>> a.append(1)
>>> a
[1]
>>> b
[1]
>>>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,尽管我还没有碰到b,但它仍然被1追加到它,因为ab是相同的列表.

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

actions = []
greetings = []
Run Code Online (Sandbox Code Playgroud)

或者这样做:

actions, greetings = [], []
Run Code Online (Sandbox Code Playgroud)

实际上,正如@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)
Run Code Online (Sandbox Code Playgroud)