diary/Kojima/2008-04-30
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[diary/Kojima]]
・python の練習
xorg の新しいのを試してみたいけど,git を使うのも面倒なの...
ftp://xorg.freedesktop.org/pub/xorg/individual/ から,一...
ダウンロードするスクリプトを書いてみた.
#!/usr/bin/python
# -*- coding: euc-jp -*-;
import urllib, os
baseurl = 'ftp://xorg.freedesktop.org/pub/xorg/individua...
dirs = [ 'app', 'data', 'doc', 'driver', 'font', 'lib', ...
def check_version(a, b):
d1 = [ ]
d2 = [ ]
for i in a.split('.'):
d1.append(int(i))
for i in b.split('.'):
d2.append(int(i))
if d1 > d2 :
return a
else:
return b
opener = urllib.FancyURLopener({})
namelist = { }
namekeys = [ ]
for i in dirs:
url = baseurl + i
f = opener.open(url)
data = f.read()
f.close()
for line in data.splitlines():
dt = line.split()
if dt[8].find('bz2') > 0:
index = dt[8].find('.tar.bz2')
tmpname = dt[8][0:index]
index2 = tmpname.rfind('-')
key = i + ":" + tmpname[0:index2]
if key not in namekeys:
namekeys.append(key)
namelist[key] = tmpname[index2+1:]
else:
chk = namelist[key]
new = check_version(chk, tmpname[index2+...
namelist[key] = new
for i in namelist:
(dir, file) = i.split(':')
url = baseurl + dir + '/' + file + '-' + namelist[i]...
filename = 'xorg/' + dir + '/' + file + '-' + nameli...
if os.access('xorg/' + dir, os.F_OK) == False:
os.mkdir(dir)
if os.access(filename, os.F_OK) == True:
print filename, "is already exist."
continue
else:
print "getting", dir, url
f = opener.open(url)
data = f.read()
f.close()
output = open(filename, 'w')
output.write(data)
output.close()
このディレクトリには,それぞれの分野ごとのサブディレクト...
バージョンがtar.bz2 と tar.gz の形式で保存されているのだ...
手動でバージョン番号の最新のものだけを取るのも面倒だし,...
とりあえずサブディレクトリのリストは事前に持っていて,そ...
tar.bz2 なファイル名のみを取り出して,'ファイル名:最新バ...
そのディクショナリを元にファイルをダウンロードして保存す...
それほど大した処理をしているわけではないけど,
バージョン番号は単純にファイル名から切り出して文字列とし...
1.9.10 > 1.10.1 になってしまうので,check_version()
でバージョン番号の各部を取り出して数値のリストにして比較...
まだまだ Python のコードは Python tutorial
やライブラリリファレンスを見ながらじゃないと書けないレベ...
python のコードって,書き順がきちんと決まった楷書で書いて...
それに比べると perl のコードは作者のひらめきがそのまま反...
# ruby は調べてないけど,楷書と草書の中間の行書みたいだっ...
このヘンは ad hoc な作業を簡単にこなすために開発された pe...
それを反面教師とした python の由来に起因する違いのような...
# まぁ,python はお手本を見ないと書けないレベルだからそう...
#comment
終了行:
[[diary/Kojima]]
・python の練習
xorg の新しいのを試してみたいけど,git を使うのも面倒なの...
ftp://xorg.freedesktop.org/pub/xorg/individual/ から,一...
ダウンロードするスクリプトを書いてみた.
#!/usr/bin/python
# -*- coding: euc-jp -*-;
import urllib, os
baseurl = 'ftp://xorg.freedesktop.org/pub/xorg/individua...
dirs = [ 'app', 'data', 'doc', 'driver', 'font', 'lib', ...
def check_version(a, b):
d1 = [ ]
d2 = [ ]
for i in a.split('.'):
d1.append(int(i))
for i in b.split('.'):
d2.append(int(i))
if d1 > d2 :
return a
else:
return b
opener = urllib.FancyURLopener({})
namelist = { }
namekeys = [ ]
for i in dirs:
url = baseurl + i
f = opener.open(url)
data = f.read()
f.close()
for line in data.splitlines():
dt = line.split()
if dt[8].find('bz2') > 0:
index = dt[8].find('.tar.bz2')
tmpname = dt[8][0:index]
index2 = tmpname.rfind('-')
key = i + ":" + tmpname[0:index2]
if key not in namekeys:
namekeys.append(key)
namelist[key] = tmpname[index2+1:]
else:
chk = namelist[key]
new = check_version(chk, tmpname[index2+...
namelist[key] = new
for i in namelist:
(dir, file) = i.split(':')
url = baseurl + dir + '/' + file + '-' + namelist[i]...
filename = 'xorg/' + dir + '/' + file + '-' + nameli...
if os.access('xorg/' + dir, os.F_OK) == False:
os.mkdir(dir)
if os.access(filename, os.F_OK) == True:
print filename, "is already exist."
continue
else:
print "getting", dir, url
f = opener.open(url)
data = f.read()
f.close()
output = open(filename, 'w')
output.write(data)
output.close()
このディレクトリには,それぞれの分野ごとのサブディレクト...
バージョンがtar.bz2 と tar.gz の形式で保存されているのだ...
手動でバージョン番号の最新のものだけを取るのも面倒だし,...
とりあえずサブディレクトリのリストは事前に持っていて,そ...
tar.bz2 なファイル名のみを取り出して,'ファイル名:最新バ...
そのディクショナリを元にファイルをダウンロードして保存す...
それほど大した処理をしているわけではないけど,
バージョン番号は単純にファイル名から切り出して文字列とし...
1.9.10 > 1.10.1 になってしまうので,check_version()
でバージョン番号の各部を取り出して数値のリストにして比較...
まだまだ Python のコードは Python tutorial
やライブラリリファレンスを見ながらじゃないと書けないレベ...
python のコードって,書き順がきちんと決まった楷書で書いて...
それに比べると perl のコードは作者のひらめきがそのまま反...
# ruby は調べてないけど,楷書と草書の中間の行書みたいだっ...
このヘンは ad hoc な作業を簡単にこなすために開発された pe...
それを反面教師とした python の由来に起因する違いのような...
# まぁ,python はお手本を見ないと書けないレベルだからそう...
#comment
ページ名: