我是Python新手,遇到了一些困难。我正在尝试以下代码:
import os
ListB=[]
for x in os.listdir('C:\\Users\\admin\\Desktop\\.....\\......\\filesC'):
fullPath = 'C:\\Users\\admin\\Desktop\\......\\.......\\filesC' + '\\' + x
ListB.append(fullPath)
File_a=open('C:\\Users\\admin\\Desktop\\......\\Object.txt').readlines()
FullFilesList=()
index=0;
for x in ListB:
FullFilesList[index]=open(x).readlines() + File_a
index+=1
我得到了这个错误:
^{pr2}$TypeError:“tuple”对象不支持项分配
如果我的问题不够聪明,我很抱歉,但我习惯用C语言编写代码。如果有人能给我一个如何解决这个问题的建议,我会很高兴的。提前谢谢。在
当Python解释器运行
FullFilesList=()
行时,它将创建一个新的空元组,并将名称FullFilesList
绑定到它。元组是不可变的,它们在创建之后不能被更改,所以不能太多地使用这个变量。相反,听起来你想要一份清单。要创建空列表,请使用为ListB
:FullFilesList=[]
创建列表时使用的相同语法但你会遇到另一个问题。当您想将值添加到
FullFilesList
时,您将它们分配给一个尚不存在的索引。那不行。如果要将每个值附加到列表的末尾,请改用list.append
方法(同样,就像您在第一个循环中对ListB
所做的那样)。在代码中还有一些小的地方可以改进。我要指出的两个是命名约定和
with
语句。常规变量名的Python约定是使用lowercase_names_with_underscores
。限制CapitalizedNames
用于类,除非您遵循使用其他约定的现有API。您可以在PEP 8中阅读有关Python样式建议的更多信息。请注意,这是Python解释器本身的风格指南,并不是所有Python项目都遵循它来编写自己的代码(但很多项目都这么做了!)。在我的另一个建议是确保你的文件在处理完之后被关闭。在您当前的代码中,您经常
open
对一个文件调用readlines
方法,然后在不调用close
的情况下删除它。由于文件对象将被垃圾回收,并且它将作为该过程的一部分关闭,因此通常可以正常工作。但它不能保证以这种方式工作(Python语言对何时进行垃圾收集没有强有力的保证)。更好的方法是使用with
语句确保文件是自己关闭的:即使
FullFilesList
顾名思义是一个列表,您也在以不受支持的方式处理它。根据经验,不要索引。为不存在的索引赋值是对列表的IndexError
,而对字典是一个插入。对于元组来说这是不可能的。使用append
:或者一步一步构建完整的列表:
^{pr2}$这往往更容易解释,因为列表没有中间状态,我们不需要跟踪它的长度(如果需要,请使用
len(FullFilesList)
)。在当您声明
FullFilesList = ()
时,您正在声明一个元组(尝试键入type(FullFilesList)
进行验证)。元组在Python中是不可变的,因此不能在for循环中更改FullFilesList(只能创建一个新的tuple并使FullFilesList引用该新元组)。更多详细信息,请参阅其他文章,如本文:TypeError: 'tuple' object does not support item assignment when swapping values。在相关问题 更多 >
编程相关推荐