我需要打开一个文件(例如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”
更改目录“files”还使用“temp.close()”
关闭对象“temp”我输入第二行代码“temp2”而不是“temp”
我不知道还能做什么。
答案 0 :(得分:6)
你的问题在于这一行:
actions = greetings = []
此行使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)