<p>命名元组很有用,但它们是不可变的:它们的属性在创建后不能更改。如果您想要一个类似的方便易变的数据保持器,那么您可能对<a href="https://docs.python.org/3/library/dataclasses.html" rel="nofollow noreferrer">data classes</a>感兴趣,只要您使用的是Python 3.7或更新版本</p>
<pre class="lang-py prettyprint-override"><code>from dataclasses import dataclass
@dataclass
class File:
file_name: str
abs_path: str
base_name: str
file_extension: str
# The '=' below sets a default value. (You could use '', but None is more
# commonly used for this.)
file_type: str = None
files = [
File('/home/user/test1.txt', 'test1.txt', 'txt'),
File('/home/user/test2.txt', 'test2.txt', 'txt'),
File('/home/user/test3.txt', 'test3.txt', 'txt'),
]
for file in files:
print(file.abs_path, file.base_name, file.file_extension)
# This will update the file_type attribute for each file:
file.file_type = 'A'
</code></pre>
<p>请注意,在列表(或任何序列)中循环的更具python风格的方法是不依赖<code>len</code>和索引,而只是在项目本身中循环</p>
<p>综上所述,如果您正在寻找一种处理文件的简单方法,例如获取文件名和扩展名,那么您可能还应该看看<a href="https://jefftriplett.com/2017/pathlib-is-wonderful/" rel="nofollow noreferrer">Pathlib</a></p>
<pre class="lang-py prettyprint-override"><code>from pathlib import Path
file = Path('/home/user/test1.txt')
print(str(file), file.name, file.suffix)
# Output: /home/user/test1.txt test1.txt .txt
</code></pre>
<p>p.S.<code>file</code>是Python2中的一个内置项,许多编辑器可能仍然会突出显示它本身,但在Python3中用作变量/类名应该是不错的</p>