Python 打开两个不同的代码行并读取同一文件
我需要打开一个文件(example actions.txt) 并将其全部传递给列表(示例操作[]) 对许多其他文件重复相同的操作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
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新手,我每天都在学习。我感谢你的帮助,还有其他人,谢谢