サーバー保存ファイルの一覧を、Web画面に表示する Pythonプログラム
index.py に配置して、該当フォルダーのファイル一覧を作成する。
資料を共用ファイルとしてサーバーに置いているが、保存されているファイルが一覧で見ることができない。
検索することも難しく、動的にフォルダー内部のファイルを一覧表にしたかった。
レンタルサーバーの任意のフォルダーに index.py という名前を付けて保存。 フォルダーにURLでアクセスすると、ファイル一覧を表示することができた。
#!/usr/local/bin/python # -*- coding: utf-8 -*- # HTTPヘッダ print "Content-type: text/html\n" # HTML print "<html>" # HTMLヘッダ print "<head>" print '<meta http-equiv="content-type" content="text/html;charset=UTF-8"/>' print "<title>index.py</title>" print "</head>" # HTMLボディ print "<body>" print "<h1>List of file on this directory</h1>" import os import glob import sys # モジュール属性 argv を取得するため argvs = sys.argv # コマンドライン引数を格納したリストの取得 argc = len(argvs) # 引数の個数 # デバッグプリント #print argvs #print argc if argc!=2 : print "フォルダー内 ファイル一覧" # パス内の全ての"指定パス+ファイル名"と"指定パス+ディレクトリ名"を要素とするリストを返す files = glob.glob("*.*") # ワイルドカードが使用可能 for file in files: print '<li><a href=',file,' target="_blank">',file,'</a></li>' print "<br>" print "Sub Directory <br>" CurrentDir = os.getcwd() for dir in os.listdir(CurrentDir): #print "%" + dir + "%" if os.path.isdir(CurrentDir + "/" + dir): print '<li><a href=./index.py?'+dir+'>'+dir+'</a></li>' print "<br>" print "<a href=./index.py?listing>list</a><br>" else: if argvs[1] != "listing" : # パス内のフォルダーを抽出 CurrentDir = "./" + argvs[1] print CurrentDir files = glob.glob(CurrentDir+ "/*.*") # ワイルドカードが使用可能 for file in files: print '<li><a href='+file+' target="_blank">'+file+'</a></li>' print "<br>" else: #全ファイル表示 'listing':一括してフォルダーとファイルを表示 CurrentDir = os.getcwd() # パス内のフォルダーを抽出 for dir in os.listdir(CurrentDir): if os.path.isdir(CurrentDir + "/" + dir): print "SubDirectory /" + dir files = glob.glob("./" + dir + "/" + "*.*") # ワイルドカードが使用可能 for file in files: print '<li><a href='+file+' target="_blank">'+file,'</a></li>' print "<br>" print "</body>" print "</html>"
お名前ドットコムのレンタルサーバーサービスでは Pythonのプログラムを実行できるということで、フォルダーのトップにindex.pyを置いてみたところ、一覧がきちんと表示されました。
chgmod 755 index.py を忘れないように。
追記
20170930 一覧表示をハイパーリンクにしました。