bringartmのブログ

忘れそうなことを記録にのこそうと。

サーバー保存ファイルの一覧を、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 一覧表示をハイパーリンクにしました。