質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3785閲覧

flaskへのテキストファイルの読み込み

naokiscottie

総合スコア11

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/04/27 09:00

編集2021/04/27 09:07

flaskへのテキストファイルの読み込みが出来ません。実行すると"そのようなファイルやディレクトリはありません"と表示されます。

bbs.pyというPythonのファイルを作り,同じ階層にarticles.txtを作っています。articles.txtは "文字列","文字列" を2行書いただけのファイルです。
とりあえず、自分が書いたコードではテキストファイルを読み込めていないようです。

bbs.pyとarticles.txtを同じ階層において、その階層にtemplatesフォルダを作り、その中にhtmlのファイルを格納しています。

test
|--bbs.py
|--articles.txt
|--templatesフォルダ→htmlファイル(bbs.html , layout.html)

コードは以下の通りです。

bbs.py
```Python

from flask import Flask, request, render_template
import codecs

app=Flask(name)

@app.route("/")
def bbs():
message="Hello World"
file=codecs.open("articles.txt", "r", "utf-8")
lines=file.readlines()
file.close()
return render_template("bbs.html",message=message,lines=lines)

@app.route("/result", methods=["POST"])
def result():
message="this is paiza"

article=request.form["article"] name=request.form["name"] return render_template("bbs.html",message=message,article=article,name=name)

if name=="main":
app.run(debug=True, host='0.0.0.0', port=5000)

layout.html ```html <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Flask_test</title> <style>body {padding: 10px;}</style> </head> <body> {{ 共通テンプレート }} {% block content %} {% endblock %} </body> </html>

bbs.html

html

1{% extends "layout.html" %} 2 3{% block content %} 4<h1>一行掲示板</h1> 5<p>{{ message }}</p> 6<form action="/result" method="post"> 7 8 <label for="article">投稿</label> 9 <input type="text" name="article"> 10 <p></p> 11 <label for="name">名前</label> 12 <input type="text" name="name"> 13 <button type="submit">送信する</button> 14 15</form> 16 17<p>{{ article }}{{ name }}</p> 18<h2>投稿一覧</h2> 19{% for line in lines: %} 20 <p>{{ line.rstrip() }}</p> 21{% endfor %} 22 23{% endblock %}

paizaのネット環境でのE-learning用の課題なのですが、私はwindowsでの自分がいつも使用している環境下で実行したところ,それまでの課題では問題なく出来ていたのですが、この課題でエラーとなってしまいました。
個人的にはbbs.pyのファイル読み込みの部分が原因だと思っていますが、どう記述すればよいのか,なぜ実行できないのか知恵を借りれればと思っています。
宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rtazaki

2021/04/27 12:00

windows10 + python公式 + vscode環境でご指定の通りに環境作ってみて、 ブラウザでhttp://localhost:5000/にアクセスしてみたところ、bbs.htmlの中身ちゃんと読めてました。 typoとか単純なやつかも知れませんよ。
naokiscottie

2021/04/27 12:47

ありがとうございます。すいません、typoってどういう意味でしょうか?
naokiscottie

2021/04/27 12:48

タイプミスですね。すいません。
naokiscottie

2021/04/27 12:59

pythonのバージョンは3.9.4です
rtazaki

2021/04/27 15:21 編集

ファイルがないってエラーが出ているのであれば、そのファイルがないんじゃないかと想像します。 (articles.txtがarticels.txtとかになってたりして。) 過去の貴方の質問内容、回答に対する返答の仕方を総合すると、誤字脱字がかなりあって、それを治すよりも、ただ目の前の問題に対して解決方法を求める傾向が強いように感じます。 例えば、エラーコードを質問内容に記載するとか、質問に答える相手が貴方自身ならどのように書いてあると嬉しいかという工夫が少し足りない気がします。 バージョン以前に、テンプレート通りに期待する答えと、エラーコードを記載する必要があると思います。 https://teratail.com/help/question-tips
rtazaki

2021/04/27 14:26

ただ、数日前よりはファイルをコードブロックで記入してあったり、フォルダ構成をtreeで表現したりしていて、良くなっていると思います。
naokiscottie

2021/04/27 14:32

まだこのサイトで質問を始めたばかりで、いろいろご指摘頂いてる所は直すよう心がけているのですが、今回のご指摘も今後気をつけます。 ファイルに関しては一番初めにファイル名を疑ったのですが、それに関しては問題ありませんでした。 何かしら僕の方でミスがあるのだと思います。 独学でやってるので、エラーで引っ掛かると完全にテンパってしまって、質問内容も配慮にかけていることと思います。すいません、
rtazaki

2021/04/27 14:39

正直、この程度で腹立てるぐらいなら、回答なんてしません。ご心配なく。謝らなくても良いので、実行手順とコンソールログを貼ってほしいです。 testフォルダでpy bbs.pyを叩いた結果、何が表示されていますか?
naokiscottie

2021/04/27 14:52

ブラウザの方は以下のようなエラーです。 FileNotFoundError FileNotFoundError: [Errno 2] No such file or directory: 'articles.txt' コンソールログはどの部分かわからなかったのですが・・・・ ファイルが見つからないという内容が含まれている部分をコピーしました。 File "C:\Users\naoki\AppData\Local\Programs\Python\Python39\Lib\site-packages\flask\app.py", line 1936, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "C:\Users\naoki\Desktop\仕事\flask_practice\test\bbs.py", line 10, in bbs file=codecs.open("articles.txt","r","utf-8") File "C:\Users\naoki\AppData\Local\Programs\Python\Python39\Lib\codecs.py", line 905, in open file = builtins.open(filename, mode, buffering) FileNotFoundError: [Errno 2] No such file or directory: 'articles.txt' 127.0.0.1 - - [27/Apr/2021 23:49:56] "GET /?__debugger__=yes&cmd=resource&f=style.css HTTP/1.1" 200 -
rtazaki

2021/04/27 15:09

修正依頼だとmarkdown使えないので、回答欄に書きます。
guest

回答1

0

ベストアンサー

与えられた条件で、以下の通りの環境を作成。
[環境]

  • Windows10
  • Python 3.8.2
  • VSCODE

※フォルダが大文字になっているのはtreeコマンドによるもの。

powershell

1PS C:\work\python> tree test /f 2C:\WORK\PYTHON\TEST 3│ articles.txt 4│ bbs.py 56└─templates 7 bbs.html 8 layout.html

[実行手順]

powershell

1PS C:\work\python> cd test 2PS C:\work\python\test> py .\bbs.py 3 * Serving Flask app "bbs" (lazy loading) 4 * Environment: production 5 WARNING: This is a development server. Do not use it in a production deployment. 6 Use a production WSGI server instead. 7 * Debug mode: on 8 * Restarting with stat 9 * Debugger is active! 10 * Debugger PIN: 310-683-103 11 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) 12

[ブラウザ]

  • ChromeとEdgeにて確認

text

1一行掲示板 2Hello World 3 4投稿 5名前 6 送信する 7投稿一覧 8"文字列","文字列"

投稿2021/04/27 15:16

rtazaki

総合スコア69

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naokiscottie

2021/04/27 23:28

同じ場所にフォルダ,ファイルを作って試してみました。 お陰様でうまくいきました。お手数おかけしました。ありがとうございます。 実行手順もpowershellにて実行したところ動作しました。 原因が分からなかったため、以前に行っていたようにbbs.pyをvscode環境で開いて直接実行したところ、ブラウザ表示に以前と同じエラーが表示されました。プログラムもファイルも問題ないことを考えると、vscode環境での実行に何か問題があったのだと思います。 ただ、この度の実行以外は、vscodeで直接実行して問題なく実行できていたことを考えると、何故今回はダメだったんだろうという点がよく分からないです。 もし、推測できるような原因があれば教えて下さい。 とりあえず、実行できたので安心しました。ありがとうございます。
rtazaki

2021/04/28 01:12

仕事フォルダが日本語だから?当てずっぽうですが。 pythonに限らずよくある話なので、デスクトップではなく、短めのパスで確認することを推奨します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問