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

Python 打开两个不同的代码行并读取同一文件,python,file,append,Python,File,Append,我需要打开一个文件(example actions.txt) 并将其全部传递给列表(示例操作[]) 对许多其他文件重复相同的操作 actions = greetings = [] with open (os.getcwd() + "/files/" + "actions.txt") as temp : for a in temp : actions.append(a) with open (os.getcwd() + "/files/" + "g

我需要打开一个文件(example actions.txt) 并将其全部传递给列表(示例操作[])

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

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)    
问题是,在这两种情况下都是打开并读取第一个文件的,可能有一个明显的错误,但我没有注意到

事先非常感谢

我在LinuxMint13(很棒)上使用Python2.7.3和优秀的IDENetbeans

附言:

我试图将目录a“files”更改为“os.chdir”

还可以使用“temp.close()”关闭对象“temp”

我把第二行代码“temp2”改为“temp”


我不知道还能做什么。

您的问题在于这一行:

actions = greetings = []
此行使
操作
问候语
都指向相同的列表。请参见下面的演示:

>>> a = b = []
>>> a.append(1)
>>> a
[1]
>>> b
[1]
>>>
正如您所看到的,即使我没有触及
b
,它仍然会附加
1
,因为
a
b
是相同的列表

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

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)

我很难理解你在问什么。您的代码的结果是什么?与您预期的结果有何不同?actions=greetings=[]作为参考!只要正常创建两个列表,它就会工作。或者,更简单地说:在第一个
中使用
问候语=列表(temp)
在第二个
中使用
操作=列表(temp)
,然后完全放弃循环和初始化。在一个空列表上循环一个iterable to call append与用iterable创建一个列表完全一样,只是你可能会弄错。是的,Kobi,谢谢,这就是bug。我回滚了你上次的编辑。将答案标记为已接受就足够了;没有必要也编辑标题。ICodez非常感谢,我的目的是简单地压缩代码,表明这两个列表,我把它们分开并解决了问题!我是Python新手,我每天都在学习。我感谢你的帮助,还有其他人,谢谢