gpt4 book ai didi

python - 如何动态创建包含同一路径中具有相似名称的文件的对象?

转载 作者:行者123 更新时间:2023-11-30 23:22:22 25 4
gpt4 key购买 nike

我对 Python 很陌生,不是程序员。我有这个:

y1990=open('Documents/python/google-python-exercises/babynames/baby1990.html', 'r', encoding='utf8')
y1992=open('Documents/python/google-python-exercises/babynames/baby1992.html', 'r', encoding='utf8')
y1994=open('Documents/python/google-python-exercises/babynames/baby1994.html', 'r', encoding='utf8')
y1996=open('Documents/python/google-python-exercises/babynames/baby1996.html', 'r', encoding='utf8')
y1998=open('Documents/python/google-python-exercises/babynames/baby1998.html', 'r', encoding='utf8')
y2000=open('Documents/python/google-python-exercises/babynames/baby2000.html', 'r', encoding='utf8')
y2002=open('Documents/python/google-python-exercises/babynames/baby2002.html', 'r', encoding='utf8')
y2004=open('Documents/python/google-python-exercises/babynames/baby2004.html', 'r', encoding='utf8')
y2006=open('Documents/python/google-python-exercises/babynames/baby2006.html', 'r', encoding='utf8')
y2008=open('Documents/python/google-python-exercises/babynames/baby2008.html', 'r', encoding='utf8')

我想写一个更简洁的代码,所以我想到了这个:

path='Documents/python/google-python-exercises/babynames/baby'
years=[year for year in range(1990,2010,2)]
open(path+str(years[0])+'.html') # works

另一方面

'y'+str(years[0]) #works fine and creates string 'y1990'

但是当我尝试

'y'+str(years[0])=open(path+str(years[0])+'.html')
File "<stdin>", line 1
SyntaxError: can't assign to operator

如您所见,我正在尝试创建变量名称并动态打开文件。我已经尝试了多种方法,但都产生了类似的错误。我还发现了other posts处理我认为类似的问题,但我看不到答案如何解决我的情况(很可能是我缺乏Python经验)。人们提到列表或字典是可行的方法,这也适用于我的问题吗?我该如何解决这个问题呢?这是正确的 Python 方式吗?

最佳答案

您看到的问题是因为您尝试将值分配给只能绑定(bind)到名称或容器元素的表达式。初学者常见的错误是尝试动态创建变量名。这几乎总是一个坏主意(例如,如果您的数据创建的变量覆盖了您的程序正在使用的变量,该怎么办)。

幸运的是,字典(一种方便的键值存储)可以解决这个问题。您可以使用简单的语句创建一个字典

files = {}

并使用添加到它

files[year] = open(path+str(years[0])+'.html')

然后,您可以引用这些文件并使用以下方式读取它们

files[1990].readline()

事实上,字典值的使用方式与任何其他文件相同。

关于python - 如何动态创建包含同一路径中具有相似名称的文件的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24537936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com