Я пытаюсь заменить строки и преобразовать кодировку загруженного файла во Flask. Я нашел коды для загрузки файла, и он работает, но у меня проблемы с заменой строк и преобразованием кодировки. Я проверил много вопросов о проблеме, но, возможно, из-за отсутствия моего английского я не могу найти решение.
Я думаю, я не могу получить файл, который я загрузил через веб-форму. Я загружаю файл в папку «static / uploads» и вижу его там. Мне нужна помощь, чтобы получить загруженный файл, а затем определить кодировку, заменить символы и сохранить.
Я работаю на ПК с Windows, Python 3.7.
import os
from chardet import detect
from app import app
from flask import render_template, flash, redirect, request
from werkzeug.utils import secure_filename
ALLOWED_EXTENSIONS = set(['txt', 'srt'])
target_format = 'UTF-8'
outputDir = 'static/coverted'
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route('/')
def upload_form():
return render_template('index.html')
@app.route('/upload', methods=['POST'])
def upload_file():
if request.method == 'POST':
# check if the post request has the file part
if 'file' not in request.files:
flash('No file part')
return redirect(request.url)
file = request.files['file']
if file.filename == '':
flash('No file selected for uploading')
return redirect(request.url)
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
with open(filename, 'rb') as f:
raw_data = f.read()
source_format = detect(raw_data)['encoding']
with open(filename, 'rU', source_format) as sf, open(outputDir + '/' + filename, 'w',
encoding='UTF-8') as tf:
content = sf.read()
replaced_content = content.replace('Ý', 'İ').replace('ý', 'ı').replace('þ', 'ş').replace('ð', 'ğ').replace('Þ', 'Ş')
tf.write(replaced_content)
return redirect('/')
else:
flash('Allowed file types are txt,srt')
return redirect(request.url)
В результате я получил: AttributeError: 'FileNotFoundError: [Errno 2] Нет такого файла или каталога: