Я относительно новичок в программировании, и я хотел создать немного кода Python, который просто ищет и заменяет их точкой, на определенные числа и последовательности символов. он должен работать на больших файлах. поэтому я придумал это.ValueError: операция ввода-вывода в закрытом файле python
import re
f = open('filein.txt','r')
o = open ('fileout4.txt','w')
newdata=f.read()
rc=re.compile('(?<=..\d)[,]')
for line in newdata:
newdataline=newdata
newline = rc.sub('.',newdata)
o.write(newline)
f.close()
o.close()
f.close()
o.close()
похоже на работу, но я все еще получаю это сообщение об ошибке.
File "C:\Python34\replace comma to dot usingresubtestnewlinecharacter.py", line 12, in ?
o.write(newline)
ValueError: I/O operation on closed file
может помочь здесь?
спасибо за ваш ответ, однако, если я это сделать, оболочка принимает навсегда для выполнения на файл 20Mb. если я закрою файл, как я сделал, прежде чем он появится, чтобы работать – Tom365
Я боюсь, что программа все еще висит, если я реализую ее так, как вы предлагали. ваш код работает с меньшими файлами, т.е. 100 kb, и хотя мое первое предложение дает сообщение об ошибке в более крупных файлах, 20mb, оно все равно предоставляет мне выход. есть ли другой способ написать этот код эффективным способом? – Tom365
@ Tom365 Bro, это самый эффективный способ решения. Однако вы хотите, чтобы он был более эффективным, я предлагаю вам задать другой вопрос! Я ответил на этот вопрос и помог вам удалить «ValueError», который у вас есть. Я понимаю вашу ситуацию, так как даже я работал над большими данными, а регулярное выражение python очень медленное !. –