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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Python

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

Q&A

解決済

1回答

9317閲覧

No such file or directoryがpythonででます。コードを変えると表示できます。

giant

総合スコア132

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Python

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

0グッド

0クリップ

投稿2017/11/17 17:25

編集2017/11/17 19:20

追記
現在はこのようなエラーがでます

IndentationError: unindent does not match any outer indentation level 127.0.0.1 - - [18/Nov/2017 02:52:47] CGI script exit status 0x100 127.0.0.1 - - [18/Nov/2017 02:52:52] "GET /cgi-bin/kakugen.py HTTP/1.1" 200 - File "/Users/en/cgi-bin/kakugen.py", line 66 elif mode == "write":mode_write(form)

イメージ説明

↓下の問題は解決いたしました。
下記のようなエラーが出ます。
違う中身のコードを書いた時には、このファイル名を使っても、実行できます。
コードの内容に問題があるのでしょうか?アドバイスをいただけないでしょうか?

127.0.0.1 - - [18/Nov/2017 02:18:13] CGI script exit status 0x7f00 127.0.0.1 - - [18/Nov/2017 02:19:08] "GET /cgi-bin/kakugen.py HTTP/1.1" 200 - ---------------------------------------- Exception happened during processing of request from ('127.0.0.1', 51877) Traceback (most recent call last): File "/Users/en/anaconda/lib/python3.6/http/server.py", line 1126, in run_cgi os.execve(scriptfile, args, env) FileNotFoundError: [Errno 2] No such file or directory: '/Users/en/cgi-bin/kakugen.py' ---------------------------------------- 127.0.0.1 - - [18/Nov/2017 02:19:08] CGI script exit status 0x7f00
#!/usr/bin/env python3 import cgi import cgitb import os.path import html cgitb.enable() FILE_LOG="chat-log.txt" def print_html(body): print("Content-Type: text/html; cahrset=utf-8") print("") print(""" <html><head><meta charset="utf-8"> <title>チャット</title></head><body> <h1>チャット</h1> <div><form> 名前:<input type="text" name="name" size="8"> 本文:<input type="text name="body" size="20"> <input type="submit" value="発言"> <input type="hidden" name="mode" value="write"> </form></div><hr> {0} </body></html> """.format(body)) def mode_read(form): log="" if os.path.exists(FILE_LOG): with oepn(FILE_LOG,"r",encoding='utf-8')as f: log=f.read() print_html(log) def jump(url): print("Status:301 Moved Permanently") print("Location:"+url) print("") print('<html><head>') print('<meta http-equiv="refresh" content="0;'+url+'">') print('</head><body>') print('<a href="'+url+'">jump</a></body></html>') def mode_write(form): name=form.getvalue("name","no name") body=form.getvalue("body","") name=html.escape(name) body=html.escape(body) with open(FILE_LOG,"a+",encoding='utf-8') as f: f.write("<p>{0}: {1}</p><hr>\n".format(name,body)) jump('kakugen.py') def main(): form = cgi.FieldStrage() mode=form.getvalue("mode","read") if mode =="read": mode_read(form) elif mode == "write":mode_write(form) else:mode_read(form) if __name__ == "__main__": main()

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

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

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

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

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

guest

回答1

0

ベストアンサー

ちょっとわかりませんが、この下の方にあるコードがkakugen.pyですか?

ここにありますように、ファイルがそもそもあるのかを確認してみてはいかが?
↑主張は同じですが、C関連のコードのリンクをつけてしまったようですね。

このように簡単にCGIを試せるんですね。
勉強になります。


追記
ここかな(2箇所)

python

1#!usr/bin/env python3 2#↓ 3#!/usr/bin/env python3 4 5... 6 7form = cgi.FieldStrage() 89form = cgi.FieldStorage()

投稿2017/11/17 17:39

編集2017/11/17 18:00
mkgrei

総合スコア8560

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

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

giant

2017/11/17 17:45

Finderで確認したところ同じコードのファイルが、同じ階層にありました。
mkgrei

2017/11/17 17:46

どのようにCGIにアクセスしていますか? 何か他のスクリプトからGET/POSTしていませんか?
mkgrei

2017/11/17 17:54

状況を把握しました。 一番上のusrの前のスラッシュが抜けていますが、それをつけても実行されませんか?
giant

2017/11/17 17:54

修正したのですが同じ結果になってしまいました
mkgrei

2017/11/17 17:56

さらに form = cgi.FieldStrage() ↓ form = cgi.FieldStorage()
giant

2017/11/17 18:19

ありがとうございます。やってみます。
mkgrei

2017/11/18 04:14

追記のバグについて 私ならタブ、スペース、全角スペースを疑います。
giant

2017/11/19 04:05

ありがとうございます。勉強になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問