Tag: python
PythonMemo
- 2021-09-12 http://dbweb.0258.net/ の内容を引っ越しました。
- 内容は2013年頃のものだったと思います。
Pythonは予約語が少なくシンプルな言語と言われています。その為ほぼ同じ文法の言語が各種グラフィックソフトやデータ解析ソフトのスクリプトとして採用されています。最近、利用が増えているプログラム言語の一つです。
字下げによりブロックを管理しますので、自然とプログラムが見やすく綺麗に記述できるらしい。
基本だけちょっと学習しておきたい。
※ pythonのバージョンは2系です。3は動かないと思います。
- このページでは、ごく簡単なプログラムのテストなどをまとめていく予定です。
参考リンク
簡単な練習
- 環境はUbuntu 12.04
シェルなどのコマンドを実行し結果を使う
# coding: utf-8
import commands
lskekka = commands.getoutput("ls -la")
print lskekka+"\n\n"
bunkatu = lskekka.split("\n")
cnt = 1
for st in bunkatu:
print cnt, st
cnt = cnt + 1
結果:
合計 36
drwxrwxr-x 3 isao isao 4096 4月 9 14:10 .
drwxr-xr-x 132 isao isao 12288 4月 9 14:10 ..
drwxrwxr-x 8 isao isao 4096 4月 9 13:49 .git
-rw-rw-r-- 1 isao isao 217 4月 9 14:10 commmand_shell.py
-rw-rw-r-- 1 isao isao 163 4月 8 19:45 func.php
-rw-rw-r-- 1 isao isao 141 4月 8 19:47 index.html
-rw-rw-r-- 1 isao isao 16 4月 8 19:45 sub.html
1 合計 36
2 drwxrwxr-x 3 isao isao 4096 4月 9 14:10 .
3 drwxr-xr-x 132 isao isao 12288 4月 9 14:10 ..
4 drwxrwxr-x 8 isao isao 4096 4月 9 13:49 .git
5 -rw-rw-r-- 1 isao isao 217 4月 9 14:10 commmand_shell.py
6 -rw-rw-r-- 1 isao isao 163 4月 8 19:45 func.php
7 -rw-rw-r-- 1 isao isao 141 4月 8 19:47 index.html
8 -rw-rw-r-- 1 isao isao 16 4月 8 19:45 sub.html
- for構文、配列関係の参考URL
コマンドライン引数の取得
- 2015-05-07
モジュールsysを読み込むと、sys.argv が コマンドラインパラーメタを格納した配列を返す。
- syspara.py として以下の様なテストスクリプトを作成
#!/usr/bin/python # coding: UTF-8 import sys print "コマンドラインのパラメータ" argvs = sys.argv argnum = len(argvs) print argvs print argnum
syspara.py はパーミッション700などにしておきます。
上記の実行結果
$ ./syspara.py hogehoge ほげほげ
コマンドラインのパラメータ
['./syspara.py', 'hogehoge', '\xe3\x81\xbb\xe3\x81\x92\xe3\x81\xbb\xe3\x81\x92']
3
上記をちょっと変えて、
#!/usr/bin/python
# coding: UTF-8
# coding:Shift_JIS
import sys
print sys.stdin.encoding
print sys.stdout.encoding
print sys.stderr.encoding
print u"コマンドラインのパラメータ"
argvs = sys.argv
argnum = len(argvs)
print argvs
print argnum
print "---------------------"
for x in argvs:
print x
結果:
UTF-8
UTF-8
UTF-8
コマンドラインのパラメータ
['syspara.py']
1
---------------------
syspara.py
※python3だと以下の様なエラーになった。
File "syspara.py", line 7 print sys.stdin.encoding ^ SyntaxError: invalid syntax
python3の場合は、次の様に修正するとエラーは解消されます。(Ubuntu20.04にて確認) - 2022-03-01
#!/usr/bin/python3
# coding: UTF-8
import sys
print ("コマンドラインのパラメータ")
argvs = sys.argv
argnum = len(argvs)
print (argvs)
print (argnum)
ファイルを読み込む
- 2015-05-07
- スクリプトファイル: fileread.py
# coding: utf-8 fname = "fileread.py" f = open(fname) line = f.readline() while line: print line line = f.readline() f.close
- 実行結果
$ python fileread.py # coding: utf-8 fname = "fileread.py" f = open(fname) line = f.readline() while line: print line line = f.readline() f.close
上記だと改行が余計に入ってしまう。
# coding: utf-8
fname = "fileread.py"
f = open(fname)
line = f.readline()
while line:
line = line.rstrip("\n\r")
print line
line = f.readline()
f.close
だと読み込んだファイルの改行がカットされるが、データが変わってしまう事になる。改行の無い出力にするには、次の様にsys.stdout.writeを使うのが良いみたい。
# coding: utf-8
import sys
fname = "fileread.py"
f = open(fname)
line = f.readline()
while line:
sys.stdout.write(line)
line = f.readline()
f.close
python3の場合
python3でシェルスクリプトで動くようなテストスクリプトにするなら、次のような修正でエラーが解消される。(2022-03-01 Ubuntu20.04で確認)
#!/usr/bin/python3
fname = "fileread3.py"
f = open(fname)
line = f.readline()
while line:
line = line.rstrip("\n\r")
print(line)
line = f.readline()
f.close
参考になりそうなWEBサイト
- Pythonでファイルの「読み込み」と「書き込み」をする方法を現役エンジニアが解説【初心者向け】
CGI
PerlがCGIとして動作可能なWEBサーバーで、pythonがインストールされていると拡張子をcgiとすれば、Perl同様にCGIとしてpythonも動作するようです。
Perlで「Hello world!」と表示させる
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello, World.";
と同様の簡単なスクリプトは、tython3だと次にようになります。printは改行しますので、「\n」は一つ少なくしています。
#!/usr/bin/python3 print ("Content-type: text/html\n") print ("Hello, World.")
参考
Python3をCGIのプログラム言語として利用する方法はネットの以下のURLなどが参考になります。
例えば、Ubuntu20.04などでは、
1.CGIを実行するには、モジュール「cgid」を有効にする。
2.ディレクトリに「ExecCGI」のオプションを有効にする。
3.cgiやpyなどの拡張子をCGIのファイルとして「AddHandler cgi-script」で指定する。
4.Webサーバー(apache2)を再起動して設定を有効にする
といった手順、設定を行います。
Apache2 : CGI スクリプトを利用する Ubuntu 22.04
https://www.server-world.info/query?os=Ubuntu_22.04&p=httpd&f=5
Apache2 : CGI スクリプトを利用する Ubuntu 20.04
https://www.server-world.info/query?os=Ubuntu_20.04&p=httpd&f=5
Python3でCGIを実行。失敗しやすいポイントも紹介。
https://shimi-dai.com/python-cgi-for-biginner/