我已经完成了一些研究,从我可以说的情况来看,这通常发生在文件被关闭之前就已经关闭了吗?
但这对于这里发生的事情没有意义。
这是我的代码:
import csv
dicto = {}
name = ""
with open(input("enter filepath here: "), "r") as mainfile:
reader = csv.reader(mainfile)
for row in reader:
name = row[8].lstrip("'")
name = name.lstrip("\xa0")
name1 = name
name = name.upper()
if not name[:3] in dicto:
dicto[name[:3]] = [name[:3]+".js", 0]
with open(dicto[name[:3]][0], "w") as file1: #here is the problem line
file1.write("tags=[")
else:
dicto[name[:3]][1] += 1
if name[:1] == "#":
print(name)
with open(dicto[name[:3]][0], "a") as file2:
if dicto[name[:3]][1]>0:
file2.write('various spam')
else:
file2.write('various eggs')
for key in dicto.keys():
with open(dicto[key][0], "a") as file3:
file3.write("\n];")
我正在运行一个大型数据库并将其拆分为JS文件,这些文件以数据标签的前三个字母命名。它似乎一开始运行正常(有44k条目要经过,所以需要几秒钟才能完成)。总的来说,我目前生成了309个文件,但没有一个是完整的。但是一旦它到达组合“CON”,就会发生错误:
Traceback (most recent call last):
File "C:\Users\SarbickiN\Documents\Codes\Python\schools\schools.py", line 16, in <module>
with open(dicto[name[:3]][0], "w") as file1:
OSError: [Errno 9] Bad file descriptor: 'CON.js'
这会关闭程序。有什么理由会发生这种情况吗?我在导致问题的那一行旁边发表评论。
CON
是Windows中文件的保留名称以及其他一些文件,因此需要替换为其他内容。 Check here for more details