Pythonのお勉強 Part44at TECH
Pythonのお勉強 Part44 - 暇つぶし2ch2:デフォルトの名無しさん
11/09/04 00:55:04.70
以上

3:デフォルトの名無しさん
11/09/04 12:38:41.34
まとめwikiが放置されてるな

4:デフォルトの名無しさん
11/09/04 17:58:18.42
ねこだいすき

5:デフォルトの名無しさん
11/09/04 18:43:47.96
3.2.2正式版来たよ
ページは未更新だけどファイルはアドレス直打ちで落とせる

6:デフォルトの名無しさん
11/09/04 19:48:43.20
> release candidate

7:デフォルトの名無しさん
11/09/04 19:55:50.35
ページは未更新つってんだろが

8:デフォルトの名無しさん
11/09/04 20:03:58.95
前スレを埋めるか、DAT落ちレベルまで使ってから引っ越してくれよ

9:デフォルトの名無しさん
11/09/06 00:50:50.11
ページの更新も来てたよ
URLリンク(www.python.org)

10:デフォルトの名無しさん
11/09/07 15:15:37.45
テンプレに入れてよ Dive Into Python 3 初めてのPythonプログラム URLリンク(diveintopython3-ja.rdy.jp)

11:デフォルトの名無しさん
11/09/07 16:36:44.45
>>10
それはこっちに自分でやってくれ
URLリンク(python.rdy.jp)

12:デフォルトの名無しさん
11/09/08 20:36:42.66
とりあえず川崎のあおい書店でパイそんチュートリアル買ってきたわ

13:デフォルトの名無しさん
11/09/08 21:09:53.52
InfoWorldが2011年のベストオープンソース賞「Bossies」を発表
URLリンク(sourceforge.jp)
# PythonベースのWebフレームワーク(Web2Py)
# PDFドキュメントが有料($13.95)なのは痛い…

14:デフォルトの名無しさん
11/09/08 21:15:04.76
追記:
日本でのWeb2pyに関する情報を発信するサイト
URLリンク(sites.google.com)

15:デフォルトの名無しさん
11/09/08 21:46:25.75
DjangoとFlaskとweb2pyはいったいどれが良いんだよ

16:デフォルトの名無しさん
11/09/08 22:33:09.86
質問おねがいします。
pymediaを使いたいんですが
libogg-1.1+
libvorbis-1.0.1+
liblame-3.95.1+
libfaad2
を先にインストールしないといけない様なのですがsetup.pyもないですし、
これはどうやってインストールすれば良いんでしょうか?
OSはXPです。宜しくお願いします。


17:デフォルトの名無しさん
11/09/08 22:45:42.67
>>12
そこ、俺がいつも買いに行ってる本屋じゃんw
なんて狭い世の中だ・・・(過疎スレなのに)

>>13
$13.95はかなり良心的では?
というか、わざわざPDFで読まなくてもHTMLでいいような気がする。
URLリンク(web2py.com)
ドキュメントは見やすいし、サンプルはシンプルだ。
とても気になる。

>>15
PylonsやTurboGearsなども。
流石に手当たり次第に試すのは面倒だから、
比較記事を調べるのがいいよ。

18:デフォルトの名無しさん
11/09/08 23:03:57.31
>>16
一応ここに非公式のビルドはある。
URLリンク(www.lfd.uci.edu)

ここを参考
URLリンク(stackoverflow.com)

あとPythonのバージョンも書いたほうがいい。

19:デフォルトの名無しさん
11/09/08 23:12:13.44
>>18
ありがとうございます。助かりました!
ちなみにバージョンは2.6でした。次からバージョンも記載します。

20:デフォルトの名無しさん
11/09/08 23:26:38.86
>>15
俺はFlaskがシンプルで好き
extensionも揃ってるしなにより分かりやすい

21:デフォルトの名無しさん
11/09/09 01:07:41.50
werkzeug

22:デフォルトの名無しさん
11/09/09 05:10:48.41
関数名をstr型で保持していて,その関数名の関数を呼び出す事にはどうすればいいのでしょうか.
例えばname = "func1"(ただし,func1は既に定義済みとする)の様な場合です.
この場合,name()のように呼び出すと,TypeError: 'str' object is not callableと怒られてしまいます.



23:デフォルトの名無しさん
11/09/09 05:29:33.11
>>22
関数が定義されているのがグローバルスコープなら、まずglobals()でグローバルシンボルを
格納している辞書を得て、そこから名前に対応する関数オブジェクトを得る。

globals()[name]()

24:デフォルトの名無しさん
11/09/09 07:17:48.15
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!

25:デフォルトの名無しさん
11/09/09 12:12:18.27
>>23
うまくいきました.ありがとうございました.
これ便利だなぁ.

26:デフォルトの名無しさん
11/09/10 15:43:15.03
>>15
DjangoのAdmin機能が魅力的に思えるならDjango、思わなかったならFlask
web2pyは知らない。Pythonぽくないって話はそこここで見る気がするけど。

27:デフォルトの名無しさん
11/09/10 19:03:54.19
Pythonで時間を指定して、その間に入力しないと強制終了みたいな処理が作りたいのですが
良い方法はないでしょうか?
具体的には
raw_input("Input: ")の処理を5秒以上経過したら終了といった感じです。


28:デフォルトの名無しさん
11/09/10 20:26:42.14
toggle使うとか

29:デフォルトの名無しさん
11/09/10 23:13:14.93
opencvでフレームを一枚ずつ抜き出して
保存するにはどうすればいいでしょうか?

for文でフレームずつ指定するの?

30:デフォルトの名無しさん
11/09/10 23:28:13.30
>>27
raw_inout の timeout って過去スレで見た希ガス

31:デフォルトの名無しさん
11/09/10 23:50:34.97
スレッド使えばいいじゃない

32:デフォルトの名無しさん
11/09/11 00:09:33.19
>>27ですがやっと見つけました。
ちょっと知らないモジュール使ってて挙動がいまいち理解できてないけど。。

URLリンク(codepad.org)

33:デフォルトの名無しさん
11/09/11 00:42:04.91
win32comでEXCELをコントロールする下のコード試したのですが、
IV65536とかの大きな位置にデータが入っていると
UsedRange.Valueでpywintypes.com_errorがでます。
どこがおかしいのでしょうか?
URLリンク(d.hatena.ne.jp)

34:デフォルトの名無しさん
11/09/11 10:36:19.22
eggファイルって、バージョンごとに用意しないといけないの?
バイナリファイルを含むならまだしも、pure pythonなライブラリなのに
バージョンごとに用意しなきゃいけないのがすごく面倒です。

35:デフォルトの名無しさん
11/09/11 18:46:24.86
Python2.7を使ってるんだけどsignal関数って何か変更された?
signal.SIGALRMもsignal.alarm()も使えないし分からん

36:uy
11/09/11 23:37:56.64
>>35
あっそっそ

37:デフォルトの名無しさん
11/09/11 23:39:15.07
寒々としたぴちょんスレにまでbotの魔の手が!

38:デフォルトの名無しさん
11/09/11 23:59:13.70
uyとかまだいたんだ

39:デフォルトの名無しさん
11/09/12 00:22:54.66
djangoを勉強してみようと思っているのですが、
勉強に適している書籍はありませんか?

40:デフォルトの名無しさん
11/09/12 02:25:16.08
>>33
上限が65535

41:デフォルトの名無しさん
11/09/12 03:11:01.62
>>31さんの言うとおりスレッドで実装して見ました。
アドバイスありがとうございました

import threading
from time import sleep

got_input = False

def timeout():
sleep(5)
if got_input == False:
print
print "Sorry, you didn't enter anything."
print "Have a nice day."

if __name__ == "__main__":
time_thread = threading.Thread(target=timeout)
time_thread.start()
print "Enter your name: "
name = raw_input("> ")
got_input = True
time_thread.join()
print "Welcome,", name

42:デフォルトの名無しさん
11/09/12 03:47:44.48
>>41

import sys
from select import select

timeout = 10
print "Enter something:",
sys.stdout.flush()
rlist, _, _ = select([sys.stdin], [], [], timeout)
if rlist:
s = sys.stdin.readline()
print s
else:
print "No input. Moving on..."


43:デフォルトの名無しさん
11/09/12 05:59:31.89
>>41
だめじゃん

44:デフォルトの名無しさん
11/09/12 13:08:19.34
>>43
汚いけどこんな感じで

import threading
from time import sleep

got_input = False

def timeout():
global got_input
sleep(5)
if got_input == False:
got_input = True
print "Sorry, you didn't enter anything."
print "Have a nice day."
else:
got_input = False


if __name__ == "__main__":
time_thread = threading.Thread(target=timeout)
time_thread.start()
print "Enter your name: "
name = raw_input("> ")
if got_input == False:
got_input = True
print "Welcome,", name
else:
got_input = False

time_thread.join()

45:デフォルトの名無しさん
11/09/12 13:28:15.61
ググってみたら、シグナルを使う方法もあるな
URLリンク(stackoverflow.com)

46:デフォルトの名無しさん
11/09/12 13:41:37.24
>>44
だめじゃん

47:デフォルトの名無しさん
11/09/12 14:04:16.95
見覚えあるなと思ったら、くだスレで一年ぐらい前にやってた話題だな
ここの
URLリンク(logsoku.com)
538から

48:デフォルトの名無しさん
11/09/12 14:57:04.40
だれか>>34プリーズ

49:30
11/09/12 15:02:45.79
>>47

調べる手間が省けた

50:デフォルトの名無しさん
11/09/12 17:51:19.65
Python2.6で組み込み済みのVer3.3.6以外のSQLite3を使いたいのですが
方法がわかりません・・・どなたかご存じないでしょうか

51:デフォルトの名無しさん
11/09/12 20:55:29.04
>>40
いや、65534とかのセルでもエラーが出るんだけど

52:uy
11/09/12 21:20:36.36
>>50
しらねっこっこっこっこっけっけっけっけっけ

53:デフォルトの名無しさん
11/09/12 21:44:30.06
>>50
ソースからコンパイル。

54:デフォルトの名無しさん
11/09/12 22:31:47.97
.dllを上書き

55:デフォルトの名無しさん
11/09/12 23:14:29.99
lolipopでdjangoは使えますか?

56:デフォルトの名無しさん
11/09/13 02:57:35.45


57:デフォルトの名無しさん
11/09/13 12:39:01.39
>>55
出来る出来ないで言えば出きるけど面倒過ぎてお勧めできない

58:デフォルトの名無しさん
11/09/13 20:30:31.38
audiotoolsというモジュールをインストールしたいのですが
pytho setup.py installを実行すると
error: Unable to find vcvarsall.batとなってしまうんですがどう対処したらいいでしょうか?
vcvarsall.batはvisual studio2010にありました。pathを通してみたんですが駄目でした。

宜しくお願いします。



59:デフォルトの名無しさん
11/09/13 21:01:44.01
>>58
つ2008

URLリンク(slacy.com)
>Just download and install Microsoft Visual Studio Express 2008 which is free.
>Please note the 2008 part. This must match the compiler that Python itself
>was built with, and that’s the 2008 (NOT 2010) version.
>(See URLリンク(mail.python.org) for more details why 2008 is important.)

60:デフォルトの名無しさん
11/09/13 21:13:52.14
>>59
ありがとうございます!やってみます。

61:デフォルトの名無しさん
11/09/13 23:30:57.17
すいません、>>60ですが2008をインストールしてやってみましたが
src/cdiomodule.c(2) : fatal error C1083: include ファイルを開けません。'cdio/cdd
a.h': No such file or directory
error: command '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe"' fa
iled with exit status 2

となってしまいました…。色々とググッては見たんですけど解決法が見つからず、(python、今までありがとう…、なブログは見つけましたが)
程度の低い質問を何度もして申し訳ないですが宜しくお願いします。


62:59
11/09/14 00:08:57.09
>>61
audiotoolsってこれ?
URLリンク(audiotools.sourceforge.net)

Required Prerequisites

libcdio

63:デフォルトの名無しさん
11/09/14 00:41:48.47
>>62
それです! Required Prerequisitesはまったく見ていませんでした。すいません。
で、今、pycdioのインストールを試みましたが
C:\Documents and Settings\user\デスクトップ\pycdio-0.17>easy_install URLリンク(pypi)<)
d5=648a83280357930d41159ec9bed990d5
Processing pycdio-0.17.tar.gz
Running pycdio-0.17\setup.py -q bdist_egg --dist-dir c:\docume~1\user\locals~1\t
emp\easy_install-b27iqe\pycdio-0.17\egg-dist-tmp-4zszxm
** Error trying to run pkg-config. Is it installed?
** If not, see URLリンク(pkg-config.freedesktop.org)
error: 指定されたファイルが見つかりません。  となってしまいました…

やりたい事は16bit以上(たいてい24bitです)のオーディオファイルを読み込んで
サンプルレート、サイズビットレートの取得など、組み込みのwave、aiffの様な動作をする
モジュールをインストールしたいので特にaudiotoolsにこだわっている訳ではないのですが
どうしたらいいでしょうか?
すいません、宜しくお願いします。



64:デフォルトの名無しさん
11/09/14 00:57:57.92
見よう見まねで2ヶ月。windowsXP:python2.7.2 です。
リストの中のリストの第2要素の出現数カウントです。嵌りました。
1・2行目がかっこ悪いです。なくしたいです。
7・8行目がかっこ悪いです。1行で済ませたいです(;ではなく)。
どなたか書き直し例をお願いします。

1 count = 0
2 cmp_dat = ''
3 for dat in dat_List:
4   if not cmp_dat == dat[1]:
5     if not dat[1] in appear:
6       appear[dat[1]] = 0
7   appear[dat[1]] += 1
8   count = appear[dat[1]]
9   cmp_dat = dat[1]

…以下、countを辞書にいれて使用する処理が続く

65:デフォルトの名無しさん
11/09/14 02:00:16.92
断片だけ貼られてもな。
dict.getやdict.setdefault使えよ、としか言えん。

66:デフォルトの名無しさん
11/09/14 02:24:42.12
collections.Counter(i[1] for i in data_List)

67:デフォルトの名無しさん
11/09/14 20:09:43.88
>>63
昨日のは解決した?

おそらくオーディオ関連のライブラリはほとんどC/C++で書かれているだろうから、
適切なライブラリを探して
ctypesやBoost.Pythonを使えばいい。
(Python APIを直接触るのは面倒なのでやめたほうがいい)

運が良ければ、そのライブラリのラッパーがあるかもしれない。

WindowsならOpenALとかXAudioとかかな。

URLリンク(www.kmonos.net)
URLリンク(www.python.jp)

68:デフォルトの名無しさん
11/09/14 21:23:55.52
>>67
全く解決してませんでした。ぶん投げてふて寝しました。
教えて頂いた情報から道を模索してみたいと思います。
面倒見てくれてほんとにありがとうございます。
またわからないことがあったら宜しくお願いします。

69:デフォルトの名無しさん
11/09/15 00:28:05.28
pythonのloggingモジュールについてお聞きしたいことがあります。
python 2.6.6 on Debian squeeze 環境なのですが、理解不能な現象が起きて困っています。
if __name__ == "__main__":

logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(levelname)s %(message)s',
filename=LOGFILE,
filemode='a')

# log start
logging.info("logging start " + LOGFILE)

上記のようなコードを書いているのですが、このスクリプトを仮に test.py としますと、
それを、Linuxの自動ログインを組んだ環境で、 .bash_profile に
python test.py
とだけ書いておいて、自動ログインが走ったら速攻pythonスクリプトが動くようにしています。
そうやって自動で走らせると、なぜかログに logging start のログが6行出力されてしまいます。
しかし手動で実行すると1行だけしか出力されません。
loggingモジュールの代わりに、import os して、 os.system("echo logging start > " + LOGFILE)
とOSのリダイレクトを使ってログを吐いた場合は自動ログインであっても手動実行であっても1行しか
出てきません。
また、1度OSが立ち上がった時は、ログオフ>自動ログイン とやってもlogging モジュールは1行しか
ログを吐きません。

問題の現象は、Linuxを起動>自動ログインが走る>test.pyが走る
この時に1度だけ6行もログを吐いてしまう事です。OSのリダイレクトでテスト、手動でスクリプト実行テスト、
一度ログアウトして自動ログインでテスト等々やってみても、1行しか吐かない事から
pythonのloggingモジュールのバグ?とか思っているんですが、ご教示頂けないでしょうか?

70:デフォルトの名無しさん
11/09/15 01:20:25.16
Debianのバグじゃね?

71:デフォルトの名無しさん
11/09/15 02:35:05.46
Debianはバグバグだからなぁー

72:デフォルトの名無しさん
11/09/15 08:17:45.70
>>69
test.pyという名前はやめたほうが。。。
よくトラブルの原因になるし。
まあ今回は違う原因だろうけど。

73:デフォルトの名無しさん
11/09/15 10:51:45.17
>>69
起動時にいくつかのスクリプトがログインシェルとして開始していると予想。
ログにPIDを出力して調べてみたら?

74:デフォルトの名無しさん
11/09/15 16:52:09.24
cxFreezeを使って実行ファイルを作りたいのですが、
pygameをimportするスクリプトを実行ファイルにしようとすると
エラーになります

print "hello"
は通りますが、
import pygame
print "hello"
は通りません。

ググっても分かりませんでした
原因と解決法が分かる方がおりましたらご教示ください。


75:デフォルトの名無しさん
11/09/15 16:56:14.92
2.6.0から2.6.6に更新すると幸せになれますか?
2.7はurllibとhttplibがちょっと変わってるのでスクリプトが動かなくなってしまいました。

レスポンスコードが200番台でも200以外でエラーを投げるのは修正されてるのかな?

76:デフォルトの名無しさん
11/09/15 17:20:52.93
>>74
環境は?

77:デフォルトの名無しさん
11/09/15 17:22:15.77
>>74
エラーメッセージはないの?

>>75
>micro のアップデートは、同じ仕様のより良い Python

>micro releases, a.k.a. patch, or bug fix releases.

例えば、

>Python 2.5系のセキュリティ修正版「Python 2.5.5」をリリースした。Python 2.5.4に
>セキュリティ関連の修正を加えたもので、新機能の追加等は行われていない。

だから、とりあえずmicroのバージョンは最新のほうがよい。

URLリンク(code.google.com)
URLリンク(www.etsimo.uniovi.es)
URLリンク(sourceforge.jp)

78:デフォルトの名無しさん
11/09/15 17:35:58.95
>>77
ありがとうございます!
って事は動かなくはならなさそうですね、入れてみようと思います。

ちなみに・・・
2.6のmicroのリリースノートってどこかにありますかね?
2.6.6と2.6.7は見つかったんですが、それより古い情報が見当たらないのですが・・・

79:デフォルトの名無しさん
11/09/15 17:45:56.91
>>78
Python Newsにそれっぽいのがあるよ。

URLリンク(www.python.org)
URLリンク(www.python.org)
URLリンク(www.python.org)
URLリンク(www.python.org)
URLリンク(www.python.org)

80:デフォルトの名無しさん
11/09/15 18:54:49.30
できるだけ、repr() の戻り値をeval() に渡すと元のオブジェクトに戻せるようにする、と言っている割には、

inf1 = float('infinity')
inf2 = eval(repr(inf1))

これがエラーになる。'nan'や'-infinity'でも同じ結果。
これって逝けてないと思うんだが・・・


81:デフォルトの名無しさん
11/09/15 19:06:54.74
これか
Issue 1732212: repr of 'nan' floats not parseable - Python tracker
URLリンク(bugs.python.org)

82:デフォルトの名無しさん
11/09/15 21:42:23.92
>>64
counter = dict()
def count(item):
 if item in counter.keys():
  counter[item] += 1
 else:
  counter[item] = 1
map(count,[dat[1] for dat in dat_list])

83:デフォルトの名無しさん
11/09/16 01:53:36.66
>>73
レスありがとうございます!
あなた様の仰るとおり、複数のシェル環境が立ち上がっていました!
logging.info("pid = " + str(os.getpid()))
で実行すると、5個も違うPIDが出てきました!
$ ps auxww | less
して該当のPIDを確認してみると、pts/1 ~ pts/5 でした。
そういえばコンソールを切り替え可能ですね、Alt+F2とかF3とかF4とかで・・・。
本来1つしか実行すべきではないのに、5重起動していました。
だからログも多重に出てたんですね。
調査結果は5重で、ログは6個重複で1個差があるのは、作業に使っている
ptsが1個スクリプト終了しての調査なので、その分だと思います。

疑問が解決しました。本当にありがとうございます。
# loggingモジュールのバグだなんて言って申し訳ないです。自分のスキル不足でした。

84:デフォルトの名無しさん
11/09/16 05:20:11.18
スキル不足の初心者ほど他人のせいにしたがる

85:デフォルトの名無しさん
11/09/16 12:32:33.08
ほめられて一物を加えず、けなされて一物を失わぬ

86:デフォルトの名無しさん
11/09/16 16:37:57.72
台湾・呉総理 「韓国ドラマを見ると反吐が出る」 「見れば見るほど背筋が寒くなる」
スレリンク(news板)

台湾の最高行政責任者が韓国ドラマが氾濫する台湾TVに対して激しい表現を使って指摘していた。

15日中国の新華社通信などによると、呉敦義台湾行政院長(総理格)は
「台湾のテレビ番組は陳腐で、毎日韓国ドラマが流れ、二番煎じ、三番煎じの内容に反吐が出る」と話した。

呉院長は引き続き韓国の『韓』と、寒いという意を持った『寒』の中国語発音が同じ点を利用して
「韓国ドラマは見れば見るほど背筋が寒くなる」と話した。 彼はまた、
「台湾は高画質のテレビ番組製作を支援する。来年には高画質デジタルTVの時代が開かれるだろう」と付け加えた。

彼は台湾テレビ番組が陳腐だという点に対し、代表的な例で韓国ドラマの氾濫を指摘した。
これに伴い、最近日本でおきている嫌韓旋風が台湾でも起こることでないかと憂慮する声も出てきている。

台湾では昨年広州アジア競技大会で女テコンドー有力金メダリスト候補であった楊淑君が
1回戦で失格になった後、「韓国の審判が不当な判定を下した」と声を上げ韓国商品不買運動と韓国ドラマ視聴拒否運動が広がった。

ソース 朝鮮日報(韓国語) 2011.09.16 10:50
URLリンク(news.chosun.com)

87:デフォルトの名無しさん
11/09/16 19:13:44.92
mysqlを使うのに一番いいライブラリを教えてください

88:デフォルトの名無しさん
11/09/16 19:28:18.55
>>87
SQLAlchemyがメジャー

89:デフォルトの名無しさん
11/09/16 19:37:25.33
>>88
ありがとうございました

90:デフォルトの名無しさん
11/09/17 10:04:22.73
Pythonを勉強し始めているものです。
クラスの中に、クラスを作る意味があまりわかりません。。。
メソッドの場合は、メソッドの中でしか使用しない、メソッドを書けて便利だと思うのですが、クラスの場合も同じ
理由でクラスを入れ子にできるのでしょうか?

91:デフォルトの名無しさん
11/09/17 10:40:52.46
>>90
俺なんてselfって書く意味すらわかんねーけど
PyPIに自作モジュールいっぱい登録してる
気にすんな

92:デフォルトの名無しさん
11/09/17 10:41:37.08
クラス定義や関数定義は単なるステートメントだから
どこにでも置ける。ただそれだけ。

93:デフォルトの名無しさん
11/09/17 10:48:13.74
>>90
Pythonで使う例ってあまり見ないけど、
Javaではそういったインナークラスはよく使うね。

「java swing listener」でググると良いかも。

94:デフォルトの名無しさん
11/09/17 10:57:01.11
そりゃJavaにはファーストクラスの関数が無いから仕方ない

95:デフォルトの名無しさん
11/09/17 11:16:48.92
Pythonはtype関数さえ扱えれば神に一歩近づけるってじっちゃんが言ってた

96:64
11/09/17 14:22:36.63
>>65 >>66 >>82

レスありがとうございます。試してみます。
(pythonいじりが出来ない状態でした。遅くてすいません)

97:デフォルトの名無しさん
11/09/18 19:15:32.37
dict(item.split(u'=') for item in query_string.split(u'&'))

URLクエリをディクショナリ形式にするワンライナなんだけど、これって分割して書くとどうなるの?

98:デフォルトの名無しさん
11/09/18 19:50:04.52
>>97
query_string = u'sourceid=chrome&ie=UTF-8&q=python+dict'
hoge = query_string.split(u'&')
fuga = [item.split(u'=') for item in hoge]
result = dict(fuga)

リストの内包表記をやらないなら
query_string = u'sourceid=chrome&ie=UTF-8&q=python+dict'
hoge = query_string.split(u'&')
result = {}
for item in hoge:
  (key, value) = item.split(u'=')
  result[key] = value


99:デフォルトの名無しさん
11/09/18 20:09:21.80
>>98
ありがと。

ペアのlistを内包したlistをdictに渡すとdict化するんですね。内包表記も知らなかったので、勉強になった。

しかしPythonの「やり方は一つ」の精神ってまだ生きているんだろうかw

100:5
11/09/18 21:26:25.86
ネットの文書ファイル拾うにはどうすればいいですか?

101:デフォルトの名無しさん
11/09/18 21:34:53.74
>>100
URLがわかっていれば、ブラウザの上のほうでアドレスをそのとおり入力して〝移動〟
テキストファイルなら表示されるし、ZIPファイルならダウンロードのダイアログボックスがでる。
jpgなら表示される。

102:デフォルトの名無しさん
11/09/18 21:39:04.46
>>100
小さいウェブサイトなら、たとえば、
Website Explorerというソフトウェアでしらべあげることができます
Googleと同様、Website Explorerもリンクをたどるだけだから、
どこからもリンクされてないファイルは、みつからない

103:デフォルトの名無しさん
11/09/18 21:42:48.48
おまえらはなんてやさしいんだ?

104:5
11/09/18 21:56:44.65
>>101-102
優しいけど違うよ

Webサーバーにあるファイルをダウンロードするって事なんだけど。。。。

105:デフォルトの名無しさん
11/09/18 22:11:24.52
>>104
def download(url, dirpath=".", opener=None, fname = "", encoding='utf-8'):
 if not fname:
  fname = url.split("/")[-1]
  fname = urllib.unquote(fname).decode(encoding)
 outpath = os.path.join(dirpath, fname)
 if opener:
  fin = opener.open(url)
  data = fin.read()
  with open(outpath, "wb") as fout:
   fout.write(data)
 else:
  urllib.urlretrieve(url, outpath)

こういうこと?

106:デフォルトの名無しさん
11/09/18 22:11:34.71
ftplib使え

107:デフォルトの名無しさん
11/09/18 22:17:56.66
PyPIで検索すればけっこう見つかるのに…
URLリンク(pypi.python.org)

fileDownloader.py
URLリンク(pypi.python.org)

108:デフォルトの名無しさん
11/09/18 23:21:33.27
やっぱアンチスレもくだすれもなくなると
こういうやからが増えるな

109:デフォルトの名無しさん
11/09/19 03:45:31.19
URLリンク(a-draw.com)

110:デフォルトの名無しさん
11/09/19 19:32:20.41
アンチスレはまだまだ健在だお

111:デフォルトの名無しさん
11/09/19 19:51:29.50
みなさんはどうやってコード整形してます?
自分はPythontidy使ってますが、他の方法も気になります

112:デフォルトの名無しさん
11/09/19 20:02:12.76
必要ない

113:デフォルトの名無しさん
11/09/19 20:16:56.88
コード整形は使ったことはないな
強いて言うなら、pep8とpylintの書き方に関する警告は気にしてるけど

114:デフォルトの名無しさん
11/09/19 20:57:35.43
emacsのpythonモードonly。

115:デフォルトの名無しさん
11/09/19 21:33:44.33
python3で使える整形ツールないから、自分で作ったわ。
tokenizeを使えば簡単かなぁ、と思い改良しながら使ってたけど、
どうもスライス表記の始点or終点の省略形の厳密な判別が面倒臭い。
( a[10:] みたいなの)
Pythonの中では、比較的だけどコロンは多義に使われているんで、
コンテキストの解釈無しにトークンの種類だけで機械的なスペース挿入は
無理っぽかった。

で、parser併用でコンテキストを解釈しつつ整形することで、なんとか
最近所望の動作に近づいたが、今度はツールのソースがカオスになったw

公開してもいいけど、このカオスを解消してからかな・・・
欲しい人がいれば、正月休みに期待してね。
まぁ、それまでにもっと高性能なのが公開されたら、永遠の俺様ツール化の方向で。

116:デフォルトの名無しさん
11/09/19 22:05:41.91
ども >>111です。

友人がeclipseのpydevで

117:デフォルトの名無しさん
11/09/19 22:34:27.11
>訂正
使わない派も多いのかな。
友人がeclipseのpydevでサクサク整形してるの見て使い始めたのだけれど、一旦使うと辞められなくなった。

>>114
Emacs にはpythonモードなんてあるんですね。Vimにもpython環境をお世話してくれるプラグインが欲しい...

>>115
3系はPythontidyも対応してないんですよね。
作るとなるとスライスのあたり確かに厄介そうですね。
3系使いで整形派の人は渇望してると思います。健闘祈る(`・ω・´)ゞ


118:デフォルトの名無しさん
11/09/19 23:56:53.51
コード整形って何?
pep8のルールでVim設定して、上で出てたpep8とpylint辺り入れれば、不便さはないと思うけど... 閉じ括弧の補完とか?

119:デフォルトの名無しさん
11/09/20 02:07:47.91
try: hoge = a / b
except ZeroDivisionError: hoge = 0
try: fuga = b * c / d
except ZeroDivisionError: fuga = 0

みたいなのがいくつも並んじゃってなんとなく気持ち悪いです。
悩んだ末に思いついたのが以下のような解決法なのですが、もっといい方法がありそうな気がします。なにかありませんか?

def calc(exp, **args):
  for v in args:
    exp = exp.replace(v, str(args[v]))
  try:
    return eval(exp)
  except ZeroDivisionError:
    return 0
hoge = calc('a / b', a=a, b=b)
fuga = calc('b * c / d', b=b, c=c, d=d)

120:デフォルトの名無しさん
11/09/20 02:19:26.43
lambda と キーワード引数かな

121:デフォルトの名無しさん
11/09/20 02:39:04.32
整形された状態で書いちゃうよね…
煽りとかじゃなく、Pythonの整形ツールにどういう用途があるのかは気になるな

122:デフォルトの名無しさん
11/09/20 03:09:05.25
>>119
>>> def calc(exp, *args):
... try:
... return exp(*args)
... except ZeroDivisionError, e:
... return None
...
>>> calc(lambda a, b: a / b, 10, 5)
2
>>> calc(lambda a, b: a / b, 10, 0)
>>> calc(lambda b, c, d: b * c / d, 6, 5, 3)
10
>>> calc(lambda b, c, d: b * c / d, 6, 5, 0)
>>>

123:デフォルトの名無しさん
11/09/20 03:17:25.77
>>> def calc(func):
... try:
... return func()
... except ZeroDivisionError, e:
... return 0
...
>>> calc(lambda: 3/0)
0
>>>

124:デフォルトの名無しさん
11/09/20 04:46:52.98
>>117
後で整形したらpythonの場合forブロックの最後間違えたりしないか?

emacsのメジャーモードはpythonに限らずどれもそうだけど
最初から整形した状態で入力するから、後で整形とかやらない。

整形違いだったらスマソ。

Emacs-Lispでpep8.pyを組み込んでリアルタイムにチェックしている
人もいるようだ。自分はマシンがショボいので毎度shellモードで実行
している。

文法チェッカのpycheckerは最初からバンドルされてる。

(以上、Linux版のemacsの場合。Windowsだとpep8.pyもpycheckerも
pypiから持ってくる必要があった。)

eclipseとかも使ってみたいのだが
常用している1024x600のネットブックだと使い物にならん。
ああいうのはマシンパワーが有り余っていて画面が広いブルジョア用。

125:デフォルトの名無しさん
11/09/20 09:51:17.15
二次元配列をlolという変数に入れるとして、

while condfunc(lol):
  del lol[-1]

ってループかますと、抜けた後のlol[-1]のリストが地味に壊れるんだけど何故だろう

126:デフォルトの名無しさん
11/09/20 10:21:18.49
>>125
説明不足だよ。
そもそもcondfuncて何?
配列要素の値を参照するだけ?
戻り値は?
これでは終了条件もよくわからない。

127:デフォルトの名無しさん
11/09/20 10:28:26.45
ふざけんな
死ね

128:デフォルトの名無しさん
11/09/20 10:49:00.36
>>125 が圧倒的に悪い
主に頭が

129:デフォルトの名無しさん
11/09/20 13:05:59.09
>>125 は例え解決方法を教えてやっても
翌日は同様に頭の悪い質問してくる。


130:デフォルトの名無しさん
11/09/20 20:17:45.60
アホすぎワロタw

131:デフォルトの名無しさん
11/09/20 20:30:19.13
lolがlough out loudlyではなく
list of listsの略だと半日経って気づいた

とりあえず再現コードがほしい

132:デフォルトの名無しさん
11/09/20 21:08:39.10
>>120, >>122, >>123
ありがとうございます!
lambda ってこういうふうに使えるんですね。

133:デフォルトの名無しさん
11/09/20 21:35:46.62
lolがlough out loudlyではなく
「叫び」の顔文字だと半日経って気づいた

とりあえずネタにレスする気はないから再現コードはいらない

134:デフォルトの名無しさん
11/09/21 11:19:41.47
>>119みたいな場面は結構あるから、例外処理用の式がほしい。
x = a / b except ZeroDivisionError 0
とかできないのかな?

135:デフォルトの名無しさん
11/09/21 12:39:27.93
x = a / b if b != 0 else 0

こっちのほうが文字数少ないけど・・・

136:デフォルトの名無しさん
11/09/21 15:50:25.52
>>135
まぁ、その場合はそうだし、事前に例外出さないようにチェックすることが簡単な場合も多いけどさ。

137:デフォルトの名無しさん
11/09/21 16:49:35.72
Linux デスクトップのスクリプトの作成: 第 2 回 Nautilus のスクリプトを作成する
Python を使用して Nautilus を拡張する
URLリンク(www.ibm.com)

138:デフォルトの名無しさん
11/09/21 20:02:23.66
Pythonでバナナがおやつに含まれるか判定する関数はありますか?

139:デフォルトの名無しさん
11/09/21 21:54:57.82
def oyatsukana(banana):
if banana in oyatsu:
return true
return false

140:デフォルトの名無しさん
11/09/21 21:59:10.02
Pythonのtrue/falseは大文字だお

141:デフォルトの名無しさん
11/09/21 22:08:08.21
>>139
そもそも
banana in oyatsu
でTrue/Falseが返ってくるから
if文は不要
return banana in oyatsu

142:デフォルトの名無しさん
11/09/22 17:05:11.91
pythonで巨大な配列をつくろうとするとMemoryErrorがでるんですけど
これは,pcのmemoryをいくら増やしても無駄なんでしょうか?

143:デフォルトの名無しさん
11/09/22 17:22:07.83
64bit化汁

144:デフォルトの名無しさん
11/09/22 19:03:15.78
>>142
代わりにyieldとかファイルとか

145:デフォルトの名無しさん
11/09/22 21:40:16.63
pythonで生成したデータを利用してCygwinで違うプログラムを実行したいです。

そこで,pythonのプログラム(cygwin.py)を実行して,Cygwinを起動させるには
コード上にどのような記述をすればよろしいでしょうか?

また,開いたcygwinでコマンドを実行するにはどのような記述をすれば良いのでしょうか?
webで検索したのですが,上手く見つけることができませんでした。もしご存知でした教えていただけいると
助かります。


146:デフォルトの名無しさん
11/09/22 21:51:00.88
そのプログラムを普通にsubprocessとかで実行してください

147:デフォルトの名無しさん
11/09/22 21:54:15.44
>>145
os.system() ではアカンかった?

148:146
11/09/22 21:59:50.92
>>145
>>146
そっちがあったわ。
ということで

subprocess 使ってください。

149:デフォルトの名無しさん
11/09/22 22:43:41.56
Pythonをコンパイルした pyo とかって 逆アセンブルみたいな何かで
元のPythonコードを取り出したりできちゃうの?

150:デフォルトの名無しさん
11/09/22 23:10:46.14
>Cygwinを起動

kwsk

151:デフォルトの名無しさん
11/09/23 00:26:13.27
doxygenのスレはあるのに
sphinxのスレがないなあ

152:デフォルトの名無しさん
11/09/23 17:10:58.26
Sphinxは習得が簡単すぎて悩む場面が全くなかった

153:デフォルトの名無しさん
11/09/23 20:04:38.06
Linuxコマンドを実行し、標準出力のみを取得するにはどうすればいいでしょうか?
Webで調べて commands.getstatusoutput(cmd) で、リターンコードと標準出力が取れる
事はわかったのですが、これだと標準エラー出力まで混ざってきてしまいます。
標準出力だけを純粋に取り出したいです。

154:146
11/09/23 20:16:53.33
>>153
パイプ。

155:デフォルトの名無しさん
11/09/23 20:17:35.04
subprocess 使ってください。

156:デフォルトの名無しさん
11/09/23 20:26:25.78
tesuto

157:デフォルトの名無しさん
11/09/23 20:30:08.26
標準のreモジュールではPOSIXの文字クラスやユニコード属性は使えませんか?
制御文字を除去する目的で次のように書きたいのですが無理みたいです

import re, urllib
s = r'foo\0bar'#ヌルバイト文字を含む文字列
re.sub(r'[[:cntrl:]]', '', s)
re.sub(r'\p{Cc}', '', s)

reモジュールのマニュアルにもないようなので無理かもしれませんが代替方法があればおしえてください
勿論、通常の文字クラスで列挙するだけでも対応可能ですが・・

158:デフォルトの名無しさん
11/09/23 21:44:57.24
>>155
subprocessなんかファイルオブジェクトが返ってきたりするみたいだし
使い方難しそう・・・・・。
色々subprocessも調べてはいるんですが、どうしてもコードが長くなりそうですね・・。

>>154
パイプですか?パイプというかリダイレクトを上手く使って
cmd 2> /dev/null
とかをcommands.getstatusoutputに食わせても、エラー出力も混ざってくるっす。
bash上で実行すると標準出力だけになるんですけどね・・・・。

159:デフォルトの名無しさん
11/09/23 21:53:54.66
>>158
from subprocess import Popen, PIPE
p = Popen(cmd, stdout=PIPE, stder=PIPE, shell=True)
print p.communicate()[0]

shell=Trueは必要なかったら外してね

160:デフォルトの名無しさん
11/09/23 22:07:30.50
馬鹿には無理

161:158
11/09/24 00:53:13.49
>>160
バカですみません・・・。

>>159
レスありがとうございます。
stder=PIPE を stderr=PIPE に修正しましたが、それ以外は
このソースで問題なく動きました!ありがとうございます。
shell=True は必要みたいです。無いと動かないです。

162:デフォルトの名無しさん
11/09/24 14:14:12.24
すいません、
mod_wsgiってmod_pythonみたいにコードを埋め込むような使い方って出来ないのでしょうか?

163:デフォルトの名無しさん
11/09/24 20:29:15.69
>>162
できない。WSGIはWebアプリケーション専用の仕様。

WSGIやるなら nginx + uwsgi もおすすめ。

164:デフォルトの名無しさん
11/09/25 02:44:43.59
>>159
これもっと簡単にならないのかな。
Rubyとかperlだと `ls -l` とかで済むのに、これはちょっと長い。
import subprocess
result = subprocess.exec('ls -l')
ぐらい簡単にしてほしい。

165:デフォルトの名無しさん
11/09/25 03:01:27.43
>>164
RubyとかPerlでやるんじゃ駄目なん?

166:デフォルトの名無しさん
11/09/25 04:02:49.39
>>164
import popen2
popen2.Popen3('ls -l')

167:デフォルトの名無しさん
11/09/25 04:04:22.69
間違えたので訂正
import popen2
popen2.popen3('ls -l')[0].read()

168:デフォルトの名無しさん
11/09/25 07:50:27.39
import subprocess
subprocess.exec_ = lambda s: subprocess.Popen(s, stdout=subprocess.PIPE, shell=True).communicate()[0]
print subprocess.exec_('ls -l')

169:デフォルトの名無しさん
11/09/25 10:47:07.81
Python3.xだとsubprocess.getoutputってのがある

170:デフォルトの名無しさん
11/09/25 11:01:48.78
>>164
結局、こうゆう短絡的な要望に「やり方は一つ
」の精神が押し潰されて行くんだな。

171:デフォルトの名無しさん
11/09/25 11:29:44.34
Pythonでは実直に書けばいいんだよ。
どっかの中二病言語みたいに無理に短くする必要はない。

172:デフォルトの名無しさん
11/09/25 12:06:54.79
OuoraはPythonで書かれてるんだね。
URLリンク(www.quora.com)


173:デフォルトの名無しさん
11/09/25 12:38:38.18
>>164
Pythonはあくまで汎用のスクリプト言語であって、特定の分野に対して大きなサポートをしない言語。
PerlやRubyはテキスト処理やCUIに対して特別なサポートをしてる言語だから、そういうのが可能なだけ。
だから、CUIのお供に使うのであれば、PerlやRubyのほうが上なのは当たり前なのよ。

174:デフォルトの名無しさん
11/09/25 12:39:56.79
>>164
結局コマンドの結果に対して何らかの処理をするんだから文字列よりもパイプでもらったほうが便利だろ


175:デフォルトの名無しさん
11/09/25 12:47:35.99
>>174
そういう2択の問題じゃないんじゃないか
Perlでもパイプとして開きたければできるわけえ

>>164は、Javaが
BufferedReader br = new BufferedReader(new InputStreamReader(System.in, charset));
とか書くのウゼーとか言われるのと同じだと思う

大クラス主義/小クラス主義の違いかもな

176:デフォルトの名無しさん
11/09/25 13:16:55.78
>>173
「バッテリー同梱」の哲学は気にいってる。便利にするためにこの哲学を崩して欲しくない。

PerlとかPHPでは何するにもアーカイブからライブラリ持ってこなきゃならん。
しかもライブラリのバージョンがどーたらこーたら。めんどくせー。

177:デフォルトの名無しさん
11/09/25 13:50:47.49
現に、1行になるか2行になるかの違いしか生じてないじゃん。

>>172
読んだ。Flaskを褒めてるね。

178:デフォルトの名無しさん
11/09/25 14:27:20.68
>>176
PerlもPHPも、とある分野に特化した言語だからな(Perlはテキスト処理やCUIのお供、PHPはWebプログラミング)
それ以外の分野に対応するのは結構面倒だったりする。
むしろ、それだけの特化言語でアーカイブから取ってくれば済むだけになってるだけ、マシと言えるぐらい。

179:デフォルトの名無しさん
11/09/25 14:27:56.75
塵も積もれば山となるんだよ低能。

180:デフォルトの名無しさん
11/09/25 15:06:25.80
Python勉強し始めたけど2と3で違いすぎて勉強しにくいぞこの野郎
Rubyにしとけばよかった

181:デフォルトの名無しさん
11/09/25 15:08:55.01
>>180
いやそれは君の実力不足が原因だから
2と3の違いなんて10分で理解できる

182:デフォルトの名無しさん
11/09/25 15:11:52.37
>>180
今度はrubyの1.8と1.9が違い過ぎてとかなるぞ

そんな訳でhaskellに(ry


183:デフォルトの名無しさん
11/09/25 15:16:48.17
[ "hoge", "foo", "bar"]
のように配列の中にキーワードを入れていおります。
文字列の中にそのキーワードが含まれるか確認したいのですが、
大文字と小文字の違いを無視してマッチさせることは出来ませんでしょうか?
"Hoge"や"FoO"にもマッチさせたいです。

また、できれば半角と全角の違いにもマッチさせたいのですが、そのようなことは出来ませんか?

184:デフォルトの名無しさん
11/09/25 15:28:41.23
>>183
そうゆうのは普通ノーマライズした配列を作って、それで比較するもんだ。

185:デフォルトの名無しさん
11/09/25 15:37:27.14
なんで?

186:デフォルトの名無しさん
11/09/25 15:41:00.05
その方が楽だから

187:デフォルトの名無しさん
11/09/25 15:51:30.76
>>177
Flask なんか出てこないぞ。何を言ってるんだ?

188:デフォルトの名無しさん
11/09/25 15:57:20.33
普通ってなんですか

189:デフォルトの名無しさん
11/09/25 16:04:07.33
ここは人工無脳のトレーニングルームじゃありませんよ

190:デフォルトの名無しさん
11/09/25 16:18:28.27
Perl忍者は偉大
Perlの知名度を上げPerl業界に大きく貢献した

191:デフォルトの名無しさん
11/09/25 16:28:12.52
大文字/小文字の区別なんて、"re.IGNORECASE"フラグでいいだろうに、
わざわざノーマライズって単語を出した理由が分からん。

192:デフォルトの名無しさん
11/09/25 16:45:10.08
配列がバカでかいとかでなければ
word in map(lambda e: e.lower(), words)

193:デフォルトの名無しさん
11/09/25 16:46:33.45
>>191
ド素人すぎる

194:デフォルトの名無しさん
11/09/25 16:53:30.92
説得させたきゃ根拠を出せよ。
おまえらはいつまで経っても学習しないな。

195:デフォルトの名無しさん
11/09/25 17:03:32.91
>>194
じゃあコード書いてくれ。

196:デフォルトの名無しさん
11/09/25 17:43:53.12
>>195
どうして私が書かなくてはならないんだ。
自分の主張は自分でしろよ。

197:デフォルトの名無しさん
11/09/25 17:48:09.92
なんという腰抜け

198:デフォルトの名無しさん
11/09/25 17:53:04.70
頭の悪い奴は口も性格も悪い
そして他力本願だ

199:デフォルトの名無しさん
11/09/25 17:58:21.88
ノーマライズするコードは>>192で出てるじゃん

200:デフォルトの名無しさん
11/09/25 18:20:48.31
正規表現で全角スペースをマッチさせたいんですが
この書き方だとダメなようで

p = re.compile('[ ]+')
p.match(text):

マッチさせる書き方を教えて頂けないでしょうか?

201:デフォルトの名無しさん
11/09/25 18:21:48.24
>>191がダメな理由が分からん
マジで教えてください。

202:デフォルトの名無しさん
11/09/25 18:22:54.93
/hoge/iで済まないからだろう

203:デフォルトの名無しさん
11/09/25 18:22:58.40
>>200
match()は完全一致なので部分一致させたいならsearch()

204:デフォルトの名無しさん
11/09/25 18:25:59.01
>>202
それで済むように思うんだが

205:デフォルトの名無しさん
11/09/25 18:29:42.17
re.IGNORECASE + re.UNICODE

なら

hoge
HoGe
hOgE

でも全部マッチするんだっけ?

206:デフォルトの名無しさん
11/09/25 18:30:34.27
俺は>>193じゃないけど……

>>201
キーワードのリストがあるとして、xがそれに含まれるかどうかというテストが
それぞれにre.match()を試みる線形な検索になるでしょ

キーワードをあらかじめ小文字化してsetに入れておけば、
if x.lower() in keywords:
だけでテストできて、ハッシュ検索だからO(1)で済むよ

207:200
11/09/25 18:46:25.38
>>203
済みません、書き方が悪かったです

全角スペースのみの文字列にマッチさせたいので
完全一致でいいかと
試しにsearch()をやってみたんですがダメでした

分かる方いれば、アドバイスお願いします

208:デフォルトの名無しさん
11/09/25 18:47:04.11
条件が勝手に増えていってないか?

209:デフォルトの名無しさん
11/09/25 18:52:05.42
>>307
ふーん
ならPython2系かな?
3かもしれないと思ったのでスルーしたけど
もし2系で、全角スペースみたいな非ASCII文字のテキスト処理をするときは
unicodeでやらんとだめ

上の例だとリテラルにuプレフィックスつけて
textもunicodeにdecodeしてみて


210:デフォルトの名無しさん
11/09/25 18:53:29.25
>>207
取り合えず、やりたい事を箇条書きしてみては?
回答者も、その方が答えやすいと思う


211:200
11/09/25 19:06:50.38
>>210
了解です具体的には

あるフォームからの入力で、半角or全角スペース、改行だけの投稿を検出したい

というもので、こう書いたんですが
p = re.compile('[\s|\n| ]+')
全角スペースのみの投稿が素通りしてしまう状態です

212:200
11/09/25 19:17:29.25
>>209
レス見落としてました済みません。
djangoを利用する手前、ご推察の通り2系です

で、ご指摘の通りuプレフィックスつけて
みたら上手く検出できました

ありがとうございます!

213:デフォルトの名無しさん
11/09/25 19:22:46.66
どじゃんぐりころころ

214:デフォルトの名無しさん
11/09/25 19:23:15.14
どじゃんくりこ

215:デフォルトの名無しさん
11/09/25 19:51:58.43
性器表現は襲いからなぁ

216:デフォルトの名無しさん
11/09/25 20:09:26.33
正規表現なんて使わなくても、↓unicode.isspace()で調べられるんじゃない?

all(c.isspace() for c in u"  \n\t \n \t a")

217:デフォルトの名無しさん
11/09/25 20:11:02.89
>>215
くそっ!こんなくだらないレスで吹いちまった・・・

218:デフォルトの名無しさん
11/09/25 20:20:54.08
Pythonなんかやっても日本には仕事がない。
趣味ならいいけど。

219:デフォルトの名無しさん
11/09/25 20:27:18.13
JavaScriptっぽく
obj.key

obj['key']
がとってこれるようにしたdictって、なんていうんだっけ?
前にこのスレかどっかで見た覚えがあるんだが。

220:デフォルトの名無しさん
11/09/25 20:31:19.61
__getitem__ を定義しただけじゃないの?

221:デフォルトの名無しさん
11/09/25 20:34:21.35
>>219
Bunchだった
URLリンク(code.activestate.com)
Python界隈ではよく知られたクラス名らしい。

222:デフォルトの名無しさん
11/09/25 20:39:15.78
急に伸びたから
また荒れてるのかと思った。

223:デフォルトの名無しさん
11/09/25 23:30:46.42
Pythonで静的変数を使うことは出来ませんか?
forで呼ばれる関数があるのですが、前回呼ばれた時に計算した値を保存しておきたいです。

224:デフォルトの名無しさん
11/09/25 23:41:47.91
URLリンク(ja.w3support.net)

225:デフォルトの名無しさん
11/09/26 08:11:39.42
mysql-pythonインストール済なのにdjangoのsyncdbコマンドでimproperly configuredエラー(No module named MySQLdb)が発生します
どうすりゃいいんでしょうか

226:デフォルトの名無しさん
11/09/26 10:54:00.25
複数バージョンのPythonが入ってるとか、virtualenvしてるとか、いろいろ。

227:デフォルトの名無しさん
11/09/26 23:24:59.37
>>219
リードオンリーでいいんだったらnamedtupleで

228:デフォルトの名無しさん
11/09/27 01:49:47.20
a1=[0.1,0.2,0.3]
a2=[0.4,0.6,0.8]
のような一次元のlistかarrayから

b=[[0.1,0.2,0.3], [0.4,0.6,0.8]]

c=[[0.1,0.4], [0.2,0.6], [0.3,0.8]]
といった多次元のlistかarrayを生成するコマンドはあるのでしょうか?


229:デフォルトの名無しさん
11/09/27 02:28:57.57
>>> map(list, (a1, a2))
[[0.1, 0.2, 0.3], [0.4, 0.6, 0.8]]
>>> map(list, zip(a1, a2))
[[0.1, 0.4], [0.2, 0.6], [0.3, 0.8]]

230:デフォルトの名無しさん
11/09/27 05:43:06.05
>>124
Emacs の M-; で行末にコメントをつけたあとに pep8 をかけると、
しょっちゅう「E261 at least two spaces before inline comment」
って言われるんだけど、あれってカスタマイズできないの?


231:デフォルトの名無しさん
11/09/27 05:50:25.35
>>230
pep8.pyを?それともM-;の方を?

ぼかぁよう分からんからその指摘も一理あるかなと
指示どおりに全部ソースを書き換えたけど。

232:デフォルトの名無しさん
11/09/27 11:45:36.13
>>228
数値データならNumPyの使用も検討したら?

233:デフォルトの名無しさん
11/09/27 16:41:12.84
>>231

どうも。pep8 で無視するオプションをつけることも可能だけれども、それを
つけたら意味ないような気がするので、Emacs のほうでどうにかならないかと
思ったのです。せっかく pep8 を通るように直しても、もう一度 M-; を
かけると元の木阿弥になるし。

ただパッと見たかんじだと、コメントが始まる位置が
max(comment-column, コメントを除く行の長さ+1) に固定されているようで、
ちょっと難しそう。


234:デフォルトの名無しさん
11/09/28 00:50:53.25
PySideはバグがだいぶ減ったね。
自分のQtアプリは全部動くようになった。

235:デフォルトの名無しさん
11/09/28 00:58:41.05
PySideはノキアスポンサー撤退で次のスポンサー探しに難航してるとか
Qtスレで読んだけど大丈夫なんだろうか

236:デフォルトの名無しさん
11/09/28 10:00:56.21
PyQtあるからいらねって人と、PySide開発自体はやぶさかではないが、なんでそれをフリーで公開してやんなきゃいけねーんだって人とに分かれそう。

237:デフォルトの名無しさん
11/09/28 10:56:10.68
PyQtの代替なんだから公開しなきゃ意味ないじゃん

238:デフォルトの名無しさん
11/09/28 12:19:07.92
PyQtがLGPLになるのを拒むから、PySideが作られたのよ。

239:デフォルトの名無しさん
11/09/28 15:59:44.80
>>229
ありがとうございました。助かりました。

240:デフォルトの名無しさん
11/09/29 16:20:27.77
クラスのメソッドの名前を exec_() みたいにしてるコードをどこかで見たんだけど、これって必要あるのかな?
普通の関数とか変数だったら標準ライブラリ内の名前との衝突を避けるべきなのはわかるんだけど

241:デフォルトの名無しさん
11/09/29 16:54:08.91
>>240
標準でありそうな関数名だから、とりあえずアンダースコア付けた関数名にしといたんじゃない?

242:デフォルトの名無しさん
11/09/29 16:58:04.49
>>240
2.xだとexecは関数ではなくexec statementで使われるキーワードだから
(printも同じ)

243:デフォルトの名無しさん
11/09/29 17:00:16.13
>>242
ああそうかキーワードだったのか
or_ とか in_ の親戚だね。サンクス

244:デフォルトの名無しさん
11/09/30 09:05:49.70
mod_wsgi関連のブログ記事とかで、たまに import cgi って書いてるソースを見るんですが、cgiモジュールを使っていてもwsgiとして動いているのでしょうか?

それだとcgiとして動いてしまうのではないかと思うのですが。

245:デフォルトの名無しさん
11/09/30 09:11:36.53
えーっ、いくらなんでもドキュメントぐらい読んでから質問しようよ

246:デフォルトの名無しさん
11/09/30 12:04:17.96
複数行のテキストデータを行毎に分割しようとして、
re.split('^', text) として分割されずに悩んでいたら、リファレンスマニュアルに、
「空のパターンマッチでは、文字列を分割しないことに注意して下さい」
と書いてあり、 re.split() ではできないことがわかったので死のうと思います。

どうせなら悔いなく死にたいと思いますので、
空のパターンマッチでも分割するうまい方法があれば教えていただけると嬉しいです。

247:デフォルトの名無しさん
11/09/30 12:37:14.52
URLリンク(www.python.jp)

248:デフォルトの名無しさん
11/09/30 12:58:43.42
>>244
importしただけで挙動が変わるって、どんだけcgiモジュールは強力なんだよ

249:デフォルトの名無しさん
11/09/30 14:11:57.31
>>246
「'^'」は空じゃないだろ。そうじゃなくて、
re.compile(r'^', re.M).split(string)
としなきゃいけないんじゃないか?
まあ string.splitlines(True) でいいけど。


250:デフォルトの名無しさん
11/09/30 16:20:31.27
Pythonの環境がなくてもexe形式で実行できない?

251:246
11/09/30 16:31:38.76
>>247 >>249
ありがとうございます。
とりあえずやりたいことは string.splitlines(True) でできることがわかりました。

それで、もう死ぬのでいいんですけれども、

> 「'^'」は空じゃないだろ。
「空のパターンマッチ」は「空文字列にマッチし得るパターン」と読みました。
ドキュメントに挙げられている例も 'x*', "(?m)^$" となっており、
位置にのみマッチする '^' も同様のケースではないかと考えまして、
実際の挙動とも合致しているように思います。

> re.compile(r'^', re.M).split(string)
これ、私の環境では動かないようなのですが、何かおかしいでしょうか?

>>> re.compile(r'^', re.M).split("foo\n\nbar\n")
['foo\n\nbar\n']

252:ゆうすけ
11/09/30 16:32:56.25
>>244
CGIは標準入出力でWebサーバと通信して動的ページを生成する仕組み。
なので、標準入出力が扱える言語なら何でも(シェルスクリプトでも)CGIプログラムは書ける。
cgiモジュールはPythonでCGIを書くのを助ける単なる便利関数の詰め合わせ。このモジュールが
なくてもCGIは書ける。このモジュールは、URIパラメータを解析する機能とかも含んでいるので、
CGIを書く以外の場面(e.g. WSGIクライアントを書くとき)でも使える。そういうこと。

253:デフォルトの名無しさん
11/09/30 16:43:52.76
>>251
In [2]: re.compile(r'^', re.M).findall("foo\n\nbar\n")
Out[2]: ['', '', '', '']

In [3]: re.compile(r'\n', re.M).split("foo\n\nbar\n")
Out[3]: ['foo\n\nbar\n']

やはり、マッチ結果が空文字列になるときは分割しないようで。

254:デフォルトの名無しさん
11/09/30 16:45:56.57
ミス
In [3]: re.compile(r'^', re.M).split("foo\n\nbar\n")
Out[3]: ['foo\n\nbar\n']

255:244
11/09/30 20:07:59.55
>>245
すいません。英語とか片言の日本語みたいな資料ばかりでなかなか理解出来なくて。

>>248
超初心者ですいません。

>>252
という事はcgiみたいな書き方をしても以下を書いていればwsgiとして動くと言う事ですね。

def application(environ, start_response):
start_response("200 OK",[('Content-Type','text/html')])

これで安心して「みんなのPython Webアプリ偏」を勉強する事が出来ます。
サラッと見たらcgiという文字が多いし発売時期が古かったので不安でした。

みなさんありがとうございました。

256:デフォルトの名無しさん
11/09/30 20:26:56.35
255は素直なよい子

257:デフォルトの名無しさん
11/09/30 22:34:01.40
まあ、WSGI周りはまともな日本語の資料がないよな。

258:デフォルトの名無しさん
11/09/30 23:32:31.74
wsgiって正直よく分からない。cgiと同じ粒度の話なのかも分からない。
uwsgiとかもあってわけわかめ。あと上位互換のwsgi新規格の話とかもあるよね。

259:デフォルトの名無しさん
11/09/30 23:54:42.20
[Web Browser] <== HTTP ==> [nginx] <==uWSGI Protocol==> [uWSGI] <== WSGI ==> [Flask]

260:デフォルトの名無しさん
11/10/01 00:13:53.04
Apacheはオワコン

261:デフォルトの名無しさん
11/10/01 00:20:37.09
アッコちゃんはマヤコン

262:デフォルトの名無しさん
11/10/01 06:23:12.04
wsgiはマジで>>255の呼び出し可能オブジェクトからreturn 文字列かyield 文字列するだけ
正直フレームワークのノウハウ覚えるより自分で作ったほうが早い

263:デフォルトの名無しさん
11/10/01 12:06:33.85
俺はマジコン

264:デフォルトの名無しさん
11/10/01 23:55:51.29
pythonchallengeのlevel6で1000ちかいテキストファイルを順次開いていくって処理で
400くらいでIOErrorでtoo many open filesってエラーがでて例外処理がわからないんだけど
なんかどうすりゃいいのか教えて

265:デフォルトの名無しさん
11/10/02 00:27:13.61
>>264
ファイルは使い終わったら閉じましょう。
OSは、同時に開けるファイルディスクリプタ数を制限しています。

266:デフォルトの名無しさん
11/10/02 00:30:15.48
やった!レベル0クリア!

267:デフォルトの名無しさん
11/10/02 00:37:32.75
>>265
あーお恥ずかしいかぎりですわ
どうもありがとう
おかげで今後閉じ忘れることなくなるだろうな

268:デフォルトの名無しさん
11/10/02 01:54:56.43
それってOSの種類で制限の上限がかわったり制限が無かったりするの?

269:デフォルトの名無しさん
11/10/02 01:56:14.39
OSってかファイルシステムの範疇になるような気がするけど……。
エロい人回答頼む

270:デフォルトの名無しさん
11/10/02 03:21:43.16
Linuxは1プロセスの最大がデフォルトで1024 (ulimit -nで参照・変更可能)
Windowsは1プロセスの最大が2048 (stdio経由だとデフォルトで512)

(間違ってるかもしれません)

271:デフォルトの名無しさん
11/10/02 05:20:19.14
あれ?

for filename in filelist: dosomething(open(filename).read())

みたいなのを 10万個くらいのファイルに対して実行してるけど、とくに叱られた
ことないんだが……

ちょっと調べたら、ここでは close() しないといけないように書かれていて、
URLリンク(stackoverflow.com)

こっちでは参照がなくなったら勝手に close() するようなことが書かれている。
URLリンク(www.tutorialspoint.com)



272:デフォルトの名無しさん
11/10/02 05:31:52.02
現行のCPythonは参照がなくなったらクローズする
けれど他のPython実装はそうするとは限らないし
CPythonも将来的にはどうなるかわからない
なので明示的決定的にclose()するかwithで書いたほうがいいよって話だろう

273:デフォルトの名無しさん
11/10/02 10:47:48.94
>>271
stackoverflowのほうもよく読めば分かるのに……
CPythonの「実装では」参照カウントが0になるとクローズされるが、
Pythonが「言語仕様として」それを保障しているわけでもないし、
Jythonのような他の実装では、実際クローズされないと書かれている

>>264との違いは、単に書き方の違いだろうな
>>271の書き方ならリファレンスカウントならすぐ参照が破棄される
想像だけど、>>264
result = (dosomething(f.read()) for f in map(open, filenames))
みたいな書き方でもしてたんじゃないの

274:デフォルトの名無しさん
11/10/02 14:27:31.26
できる限りwith文を使いませう。

275:デフォルトの名無しさん
11/10/02 14:48:40.70
ファイル処理の場合はclose()よりもまずwithを学ぶべきってぐらい重要な文だよね

276:デフォルトの名無しさん
11/10/02 16:54:58.77
withって便利だけど、何にでも使えるから、何が起こってるのか分かりにくくなるよね。
あと、複数同時に使うとインデントがどんどん深くなるのも嫌な感じ。

277:デフォルトの名無しさん
11/10/02 17:19:08.04
3.1から
with A() as a, B() as b:
って書けるようになったよ

278:デフォルトの名無しさん
11/10/02 17:25:04.02
>>277
なんだってー!

2.7でも使えるのか。これはいい。

279:デフォルトの名無しさん
11/10/02 18:27:51.16
with文は信用できない
                例外信者より

280:デフォルトの名無しさん
11/10/02 19:09:46.74
with文使ってても例外はハンドリングできるでしょ。
何か違う話?

281:デフォルトの名無しさん
11/10/02 19:11:13.54
withはC#のusingをパクったんだっけ。

282:デフォルトの名無しさん
11/10/02 19:29:41.25
>>265
How meny files ? 15[ENTER]

283:デフォルトの名無しさん
11/10/02 20:40:30.63
with って break できんの?

284:デフォルトの名無しさん
11/10/02 20:41:56.40
>>282
Ok.
TM[ENTER]

285:デフォルトの名無しさん
11/10/02 21:05:46.92
MS-DOSとか懐かしいけど、なんかいろいろ違う気がw

286:デフォルトの名無しさん
11/10/02 21:19:59.24
「meny」は酷いよ~

287:デフォルトの名無しさん
11/10/02 21:21:07.89
>>281
インスパイア

288:デフォルトの名無しさん
11/10/02 21:25:08.60
>>281
リスペクト

289:デフォルトの名無しさん
11/10/02 21:51:55.25
>>281
PythonがC#にパクられた

290:デフォルトの名無しさん
11/10/03 00:25:23.91
リスペクトってLispから引っ張ってくることだよね

291:デフォルトの名無しさん
11/10/03 01:10:50.59
手続き的と宣言的の調和

292:デフォルトの名無しさん
11/10/03 01:15:14.49
pass

293:デフォルトの名無しさん
11/10/03 02:27:03.81
角電池

294:デフォルトの名無しさん
11/10/03 05:20:48.06
>>281

Common Lisp の場合、ファイルをオープンするには関数 open を使います。オー
プンしたファイルは必ずクローズしてください。この操作を行う関数が close です。

そして Common Lisp には、この 2 つの動作を行ってくれる便利なマクロ
with-open-file が用意されています。

URLリンク(www.geocities.jp)
これのことですね。


295:デフォルトの名無しさん
11/10/03 13:11:46.34
僕の肛門もclose()されそうです。

296:デフォルトの名無しさん
11/10/04 10:26:41.07
cron 等のOSが持っているタスクスケジューラ機能を使わず、Pythonが持っている独自のスケジューラライブラリってありますか?

出来れば標準で、初心者に優しいライブラリであるとありがたいです。

297:デフォルトの名無しさん
11/10/04 12:23:19.64
daemon書いて時間が来るまで定周期でsleepかましつつ回して実行じゃだめ?
常時似非CRON用Pythonスクリプトが走っている事になるけど・・・

298:デフォルトの名無しさん
11/10/04 13:57:30.11
>>296
URLリンク(www.python.jp)
標準ならこういうのになるけど……。

299:デフォルトの名無しさん
11/10/04 16:05:47.00
pythonの学習に適したソースコードが載っているサイトはないですか?

300:デフォルトの名無しさん
11/10/04 19:08:03.84
cookbook見とけ

301:デフォルトの名無しさん
11/10/04 21:06:44.78
MLの人ですか?

302:デフォルトの名無しさん
11/10/04 23:40:13.86
マルチスレッド対応のエロ画像自動巡回ダウンローダを作ると勉強になるよ。

303:デフォルトの名無しさん
11/10/05 00:30:08.08
でエロ画像はどうやって識別するんだ?
間違って相撲取りの写真でも持ってこられたら悲惨だぞ

304:デフォルトの名無しさん
11/10/05 00:51:54.88
こういうのとかか
URLリンク(ecx.images-amazon.com)

305:デフォルトの名無しさん
11/10/05 02:55:26.83
ジム・オルークじゃねえか

306:デフォルトの名無しさん
11/10/05 08:00:45.40
画像巡回ダウンロードソフトは多くの人が一度は作ったことがあるはず
そしてそれはお気に入りのエロサイト前にして煩悩のみで作成するから
まったくストレスを感じないし集中できてPythonの習得にも役立つという優れもの

307:デフォルトの名無しさん
11/10/05 08:19:26.30
>>306
その手があったか!作りたいネタなくて困ってたんだ!ありがとう!ありがとう!

308:デフォルトの名無しさん
11/10/05 10:12:50.19
「リビドー駆動開発」ってやつか

309:デフォルトの名無しさん
11/10/05 10:21:19.67
>>308
www

310:デフォルトの名無しさん
11/10/05 16:33:04.82
途中で抜いちゃったら頓挫する可能性が高いな

311:デフォルトの名無しさん
11/10/05 17:38:26.36
どうせ小一時間もすればまた復活するだろ。
賢者モードではリファクタリング&デバッグするなどメリハリ付けると良い。

312:デフォルトの名無しさん
11/10/05 21:39:31.77
class A:
def __init__(self,x):
self.x = x
a = A(1)

class B:

b = B()
b.x = 1
の違いは初期化のタイミング以外にはないと思っていいですか?


313:デフォルトの名無しさん
11/10/05 22:32:51.69
くだすれPython(超初心者用) は終了?

314:デフォルトの名無しさん
11/10/05 22:50:58.77
PyQtの日本語の専門書はでないのかな?

315:デフォルトの名無しさん
11/10/05 23:16:08.10
Windows環境のIDLEでマルチプロセスの結果を表示させたいのですが、
表示されません。
表示させる方法を教えていただけないでしょうか。

コードは標準ライブラリの説明に載っていた以下のものを試しました。

from multiprocessing import Process
def f(name):
 print 'hello', name

if __name__ == '__main__':
 p = Process(target=f, args=('bob',))
 p.start()
 p.join()

f関数のprintのところをファイルの入出力に書き直して試して、プロセスが動いてるのは確認できたのですが、
print文の結果がIDLEに表示されないです。

316:デフォルトの名無しさん
11/10/06 04:51:18.06
マルチスレッドやマルチプロセスでprintが使えると思わないこと

317:デフォルトの名無しさん
11/10/06 06:21:44.62
メインのスレッドにデータ渡してメインのスレッドがprintするようにしないと
ダメなんじゃね?

318:デフォルトの名無しさん
11/10/06 06:31:22.82
コマンドプロンプトでは動くのならIDLEを捨てる

319:デフォルトの名無しさん
11/10/06 07:21:35.74
Windowsを捨てる

320:デフォルトの名無しさん
11/10/06 08:39:25.93
occu.py

321:デフォルトの名無しさん
11/10/06 12:23:39.44
>>316-320
お返事ありがとうございます。
コマンドプロント&PowerShellでプロセスからのprintが表示されることを確認しました。
IDLEだとメインに表示データ渡さないとダメなんですね。
occu.pyはちょっと何言ってるか分かりませんでした。

322:デフォルトの名無しさん
11/10/06 17:33:58.39
Djangoチュートリアルをやり始めたのですが、
URLリンク(djangoproject.jp)
のページ最下部付近の
>>> p.choice_set.create(choice='Not much', votes=0)
をやろうとすると
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.6/dist-packages/django/db/models/fields/related.py", line 436, in create
return super(RelatedManager, self.db_manager(db)).create(**kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/manager.py", line 138, in create
return self.get_query_set().create(**kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py", line 358, in create
obj = self.model(**kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/base.py", line 364, in __init__
raise TypeError("'%s' is an invalid keyword argument for this function" % kwargs.keys()[0])
TypeError: 'choice' is an invalid keyword argument for this function
と出てきます。

該当部分は英語ページでも同様の記述ですし、
ブログ等で検索してもエラーが出たという記述はありません。

どうすればエラーが解消するのでしょうか。
宜しくお願いします。

323:デフォルトの名無しさん
11/10/06 18:17:37.27
>>322
$ python manage.py sql polls
の結果はどうなってる?正しい?
(できれば貼りつけて)

$ python manage.py syncdb
はした?

models.pyにタイポはないか?

324:デフォルトの名無しさん
11/10/06 18:19:18.72
Djangoは学習コストが高杉晋作。

325:デフォルトの名無しさん
11/10/06 18:28:30.02
そうでもない

326:322
11/10/06 18:52:45.52
>>323
$ python manage.py syncdbは実行しました。
models.pyのタイポはないと思います。エラーが出てから、全文コピペで書き直しましたので。。
$ python manage.py sql polls の結果は

/usr/local/lib/python2.6/dist-packages/django/db/__init__.py:60: DeprecationWarning: Short names for ENGINE in database configurations are deprecated. Prepend default.ENGINE with 'django.db.backends.'
DeprecationWarning
BEGIN;
CREATE TABLE "polls_poll" (
"id" integer NOT NULL PRIMARY KEY,
"question" varchar(200) NOT NULL,
"pub_date" datetime NOT NULL
)
;
CREATE TABLE "polls_choice" (
"id" integer NOT NULL PRIMARY KEY,
"poll_id" integer NOT NULL REFERENCES "polls_poll" ("id"),
"choice" varchar(200) NOT NULL,
"votes" integer NOT NULL
)
;
COMMIT;

こうなっています。polls_pollのpub_dateがチュートリアルと少し異なりますが、それ以外は同一のようです。。

実は書き込みしてからずっと、
エラーファイルに出てきているbase.pyとかquery.pyとか解読しようと試みていたのですが、
わけわかんなくて泣きそうだったので、レス頂けただけでも嬉しくて涙出そうです。。
vmwareにubuntu10.10を入れて練習しているのですが、
何か環境に問題があるのかもしれませんので、windowsで改めてやってみます。
教えてちゃんですみませんでした。ありがとうございました。

327:デフォルトの名無しさん
11/10/06 18:56:09.22
>>322
ページの真ん中あたりの
コラムのmax_length にまつわるエラー
の直前の記述を丸ごとmodel.pyに入れた?

直接にはここの
choice = models.CharField(max_length=200)
が無いって言っていると思われ。

328:デフォルトの名無しさん
11/10/06 19:01:07.86
>>326
作成されたDBをDB付属のツールで開いて
表示された通りのテーブルが作成されてる?

329:デフォルトの名無しさん
11/10/06 19:09:08.52
しつこいが、
DjangoとかRoRみたいな巨大なフレームワークはおすすめしない。

330:デフォルトの名無しさん
11/10/06 19:19:26.89
>>329
pythonでおすすめと言うとどれ?

python -m SimpleHTTPServer

とか?

331:デフォルトの名無しさん
11/10/06 19:25:17.05
>>324
馬鹿には無理

332:デフォルトの名無しさん
11/10/06 19:26:28.51
>>330
WSGI

333:デフォルトの名無しさん
11/10/06 19:26:31.52
独り言だが、
bisect モジュールの各関数に、keyオプション引数があれば超便利なのに、と思い検索したが、
散々ガイシュツな議論なのね。
要らない派は、keyがあると、不適切なコード(多数回bisectが呼ばれる状況でkey使うと、
無駄にkey関数が呼ばれて遅くなる)を書く馬鹿がいるから、という理由だが、、、、
Zen of Python に、foolproof であるべし、なんてあったっけ?

334:デフォルトの名無しさん
11/10/06 19:27:08.56
>>330
werkzeug

335:デフォルトの名無しさん
11/10/06 19:37:12.14
>>334
DB無かったらこれでいけるな。

336:デフォルトの名無しさん
11/10/06 20:13:04.77
確かに多すぎて迷うなぁ
URLリンク(wiki.python.org)

337:322
11/10/06 21:38:10.77
327さんと328さんにレス頂いてから再度コピペしたりテーブルを確認したりしたのですが原因がわからず、
もう一度Djangoのインストールからやり直したら問題なくできました。

>>326で偉そうにsyncdb実行しましたとか言ってしまったのですが、
もしかすると最初に実行したときにmodels.pyにタイプミスがあって、
そのミスを放置した状態でsyncdbを実行したまま苦しんでいたのかもしれません。

>>323さんにご指摘頂いた後に再度syndbを実行してもうまくいかなかったので、
実は原因は全く別のところにあるのかもしれませんが・・・


Djangoは私には早いかもしれませんが、もうしばらく頑張りたいと思います。
初心者の馬鹿な質問に付き合わせてしまって申し訳ありませんでした。レスくれた皆さんに感謝しています。

338:デフォルトの名無しさん
11/10/06 21:49:20.24
DjangoはSQLAlchemyが標準なら使ったかもしれないが組み込みの奴は貧弱すぎる

339:323
11/10/06 22:40:00.83
>>337
>ミスを放置した状態でsyncdbを実行したまま苦しんでいたのかもしれません
Djangoは既存モデルのフィールド変更に対して自動でマイグレート(スキーマを変更)
できないから、単純に
フィールド名のタイポ→syncdb→修正→syncdb
ではうまくいかない。
Djangoではこういう場合、Southというツールを使う。
(修正後にSouthでスキーマの変更を反映する)
とはいえ、今回はチュートリアルの序盤ということだから、
素直にプロジェクトを作りなおすのが無難か。

一般的にスキーマの変更は面倒なことが多い。
だからこそモデルとして分離することが当たり前になっている。
それで、例えばDjangoだったらmodels.pyを編集するときは特に慎重に。
(もちろん間違えてもどうにかなるけれども)

340:323
11/10/06 22:50:17.63
追記

DeprecationWarningとある。
今回のエラーとは関係なさそうだが、警告は災いの種だから早めに潰したほうがいい。
URLリンク(all-rounder-biz.blogspot.com)

あとSouthのドキュメントも
URLリンク(ae35.bitbucket.org)

341:デフォルトの名無しさん
11/10/06 23:59:47.35
俺はWebプログラマじゃないから、
Flaskちゃんで十分だ。めちゃ使いやすい。
永続化はMongoDBとSQLAlchemyを使い分け。

342:デフォルトの名無しさん
11/10/07 06:54:46.87
ZopeとかPloneも複雑すぎてわけわからんかったなぁ。

343:デフォルトの名無しさん
11/10/07 08:11:11.43
周りにノウハウ持ってる人いないなら軽量貧弱フレームワーク使うか作ったほうが楽だよな
勉強会とか言ってわざわざノウハウ共有するのもいっそアホくさいし

344:デフォルトの名無しさん
11/10/07 09:06:27.43
ドジャンゴころころは重厚長大な戦艦大和。
小さい駆逐艦の艦隊にやられる運命。

345:デフォルトの名無しさん
11/10/07 11:31:16.59
URLリンク(code.google.com)

346:デフォルトの名無しさん
11/10/07 16:27:51.44
ド・ジャンゴさんは社内でノウハウを共有して自社サービス全てこれで作成するよ!みたいな環境だとたぶん最強だけど
受託開発のようにニーズが顧客によって違うようなプロジェクトでは合わないだろうなぁ

347:デフォルトの名無しさん
11/10/07 19:32:42.96
DjangoってそもそもCMS開発用だからね。あまり汎用的に見えない。

348:デフォルトの名無しさん
11/10/07 20:22:38.01
pipって、Windowsでもソースパッケージをコンパイルできますか。

349:デフォルトの名無しさん
11/10/07 22:10:45.13
python3.2.2でてるけどまだ2系列が主流なの?

350:デフォルトの名無しさん
11/10/07 23:13:10.19
標準モジュール以外をふんだんに使っている人は2系が主流じゃないかな
3系ではいまだに対応してないモジュール結構多いし

351:デフォルトの名無しさん
11/10/07 23:15:44.17
>>348
できる。
以下参考に
MinGW
URLリンク(pythonlife.seesaa.net)
Viausl Studio
URLリンク(slacy.com)

>>349
そうだよ。
まだ主要なライブラリが3.xに対応していない。
今まさに話題になっていたDjangoもそう。
Pythonは汎用な言語なのだが、
これは高速で低レベルなC/C++拡張を手軽に利用できることが大きな要因の一つ。
けれども、2.x→3.xに対応させるには、
今まで利用してきたC/C++拡張にメスを入れなければならない。
URLリンク(coreblog.org)
あと、ctypes+win32でも結構面倒なことに。
URLリンク(www.freia.jp)
例えばPyWin32なんかは3.xに移行するの面倒だろう。

352:デフォルトの名無しさん
11/10/07 23:18:24.17
すまん、よく見たらpipか・・・
基本的にはeasy_installと一緒なんだが
使えないオプションが多々ある。

353:デフォルトの名無しさん
11/10/09 02:01:40.88
アホな質問で申し訳ないんですが
リストの最小値の添字を返す関数は組み込まれてますか
ないならスマートな方法を教えて下さい

354:デフォルトの名無しさん
11/10/09 03:34:31.12
L = [1, -2, 3, -4, 5]
print L.index(min(L))

最小値が複数ある場合はしらん

355:デフォルトの名無しさん
11/10/09 03:41:06.46
ほうほう、夜遅くにありがとうございます

356:デフォルトの名無しさん
11/10/09 03:50:52.67
from operator import itemgetter

def argmin(a):
    return min(enumerate(a), key=itemgetter(1))[0]

のほうがいいぞ。

357:デフォルトの名無しさん
11/10/09 08:23:53.94
Tython
URLリンク(d.hatena.ne.jp)


358:デフォルトの名無しさん
11/10/09 14:42:26.69
Python関係ないじゃん!

359:デフォルトの名無しさん
11/10/09 14:56:08.89
これで更にIT土方の体力勝負化が進むな

360:デフォルトの名無しさん
11/10/10 13:59:49.49
ページ内のtwitterアカウントを纏めてtwitterのlistに登録するマクロ作ろうとしています。
HTMLからのアカウント抽出はJavaScript、twitterのリストへの登録はPython使ってやりたいのですが、
PythonからJavaScript実行させることって出来ますか?

ブラウザはchrome使ってます。

361:デフォルトの名無しさん
11/10/10 18:26:06.81
Javascript を含んだHTMLファイルを書き出してブラウザで開かせるとか?

362:デフォルトの名無しさん
11/10/10 20:22:03.63
なんでアカウントの抽出をPythonでやらないの?
JavaScriptよりも楽だと思うが。

363:デフォルトの名無しさん
11/10/10 21:51:02.86
def argmin(a):
return min(enumerate(a), key=lambda x: x[1])[0]

って今まで書いてたんだけど、
itemgetterの方が効率いいの?

364:デフォルトの名無しさん
11/10/10 23:49:28.65
>>363
ビルトインなだけあってitemgetterの方が少し早い。

>>> timeit.timeit(setup='a=range(1000);from operator import itemgetter', stmt='min(enumerate(a), key=itemgetter(1))[0]', number=10000)
1.6388215130858725

>>> timeit.timeit(setup='a=range(1000);f=lambda x:x[1]', stmt='min(enumerate(a), key=f)[0]', number=10000)
2.7940041704099485

365:デフォルトの名無しさん
11/10/11 01:15:36.07
おお、だいぶ変わるのな。

366:デフォルトの名無しさん
11/10/11 05:33:20.73
>>361
ブラウザで開いたとして、その結果はどうやったら取れるでしょうか?
JSってファイルに書き出しとかは出来ないですよね??

>>362
既に作成済みのJSがあるからです。

そのまま動かす方法はない感じですかね。。
ちょっと思いついたのですが、Selenium2 のWebDriver使えば
出来そうな気がしてきました。
JavaでやったときにはJSの実行が出来たので同じ感じで
Pythonでもいけるかもですね。

ちょっと試してみます

367:デフォルトの名無しさん
11/10/11 06:32:10.04
「ページ内のtwitterアカウント」ってのが何を指しているのかが分からん。

368:デフォルトの名無しさん
11/10/11 09:05:58.38
出来るけど実際やったらすぐアク禁なるよ

369:デフォルトの名無しさん
11/10/11 09:20:40.07
APIがダメならmechanizeを使えばいいじゃない。

370:デフォルトの名無しさん
11/10/11 15:11:41.46
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!

371:デフォルトの名無しさん
11/10/11 19:50:13.16
Django1.3をCGIで動かしたいんだけどどうすればいいでしょうか?

372:デフォルトの名無しさん
11/10/11 22:46:46.01
>>366
Java による JavaScript 処理系である Rhino を使って実行するのはどう?
JavaScript から Java のクラスを使えるからファイル書き出しも問題ない

373:デフォルトの名無しさん
11/10/12 02:57:04.50
>>371
URLリンク(bty.sakura.ne.jp)

374:デフォルトの名無しさん
11/10/12 19:52:06.16
>>373
ありがとうございます、でもこれDjango-1.1.1ですよね?
1.3でも同じなんでしょうか?

375:デフォルトの名無しさん
11/10/12 20:39:53.89
pass

376:デフォルトの名無しさん
11/10/12 20:51:40.36
鶏Django鍋のおいしい季節

377:デフォルトの名無しさん
11/10/12 20:53:25.53
Flaskをチュートリアル通りにやって勉強しているのですが、
URLリンク(flask.pocoo.org)
この項目のテストを実行すると

E
======================================================================
ERROR: test_empty_db (__main__.FlaskrTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "flaskr_tests.py", line 13, in setUp
flaskr.init_db()
AttributeError: 'module' object has no attribute 'init_db'

----------------------------------------------------------------------
Ran 1 test in 0.022s

FAILED (errors=1)

と表示されてチュートリアル通りの結果になりません。
これは、何が原因なんでしょうか…?

あと、関係あるかわかりませんがPythonの対話シェルでも
import flaskr
flaskr.init_db()
を実行するとAttributeErrorが出ます。

378:デフォルトの名無しさん
11/10/12 21:00:04.01
>>377
flaskrってこれでしょ?ちゃんとチュートリアルの内容は理解できてる?
URLリンク(github.com)

379:377
11/10/12 21:01:38.42
すみません、自己解決しました…。どうかしてました…

380:デフォルトの名無しさん
11/10/12 22:13:19.86
英語読めないと日本語資料の少ないPythonは厳しいと思うぞなもし

381:デフォルトの名無しさん
11/10/13 09:51:10.05
Facebookの元CTO
「PHPは問題外。クソすぎるがPHPの資産が多すぎてFacebookをPythonとかに移行するのは不可能。」

382:デフォルトの名無しさん
11/10/13 10:10:58.65
>>381
どういう意味?

383:デフォルトの名無しさん
11/10/13 11:34:56.22
本当ははPHPを捨てたいけど、
既存のコードベースが大きすぎてもう切り替え不能ってことでしょ。

384:デフォルトの名無しさん
11/10/13 11:56:55.01
まあPHPのシステム抱えてるところはみんな思ってることだろうな

385:デフォルトの名無しさん
11/10/13 14:37:24.80
問題外なのに使いつづけるってなんか意味不明だなあ。

386:デフォルトの名無しさん
11/10/13 14:43:41.62
スクリプトを実行せずに文法チェックだけする方法ってありますか?
あまり厳密なものでなくても良くて、 perl -cw とか ruby -cw みたいな感じです。

387:デフォルトの名無しさん
11/10/13 15:14:39.22
>>386 pylintとか

388:デフォルトの名無しさん
11/10/13 15:21:26.07
>>386
python -c'compile(...)'とかする

389:デフォルトの名無しさん
11/10/13 16:56:21.33
jython 2.1 という特殊な環境で申し訳ないのですが、教えてください。

threading.RLockのacquireやreleaseを使うと、
stderrにスレッド名や何度目の確保かなどの情報が表示されるのですが
この内容を出力しないようにすることはできますか?

390:デフォルトの名無しさん
11/10/13 21:27:16.40
>>381
具体的にphpの何がダメなんだろ。俺もpythonが好きなんだが、これから仕事でphpやるんだわー。

391:デフォルトの名無しさん
11/10/14 04:44:30.20
やればわかる

392:デフォルトの名無しさん
11/10/14 07:29:48.27
>>390
良し悪しはよくわからんけど、PHPをやった経験からすると、
Javascriptと同様にhtmlと混在できるから
テンプレート機能があるフレームワークとか、
あるいは手書きでも意識してそこを分離するように書かないと
後で改修する時に泣く。

393:デフォルトの名無しさん
11/10/14 10:41:37.04
下の方法でbeep音を出そうとすると確かにスピーカーから音は出るのですが
ヘッドホンを繋いでいるときでも無視されてスピーカーから音が出てしまいます
ヘッドホンが繋がっているときにはヘッドホンから音が出るようにしたいのですが
どうすればよろしいでしょうか?
URLリンク(blog.srengine.com)


394:デフォルトの名無しさん
11/10/14 10:52:28.39
>>393
標準なら
import Tkinter
r = Tkinter.Tk()
r.bell()
r.destroy()
del r

Windows限定で良ければ
import winsound
winsound.MessageBeep(winsound.MB_ICONHAND)


395:デフォルトの名無しさん
11/10/14 11:18:53.19
>>394
ありがとうございました

396:デフォルトの名無しさん
11/10/14 11:48:21.32
>>390
やればわかるよ
C++に毛が生えた程度の能力しかないくず言語だから

397:デフォルトの名無しさん
11/10/14 11:57:41.12
PHPなんてどうみてもC++以下だろ

398:デフォルトの名無しさん
11/10/14 12:29:16.16
PHPはそもそもテンプレート言語なのにその上にテンプレートやらフレームワークやら載っけるから意味のわからない事になる

399:デフォルトの名無しさん
11/10/14 13:52:34.37
訃報: C 言語の開発者、デニス・リッチー氏が死去
URLリンク(developers.slashdot.jp)

Google+ で Rob Pike 氏が語ったところによると、C 言語の開発者、K&R の R であるところの Dennis Ritchie 博士が亡くなられた。
70 歳 (Rob Pike 氏による Google+ への投稿) 。

長らく闘病中だったとのことで、先週末に自宅で息を引き取ったそうだ。

400:デフォルトの名無しさん
11/10/14 14:02:18.16
>>399
スレ違い

401:デフォルトの名無しさん
11/10/14 15:17:22.49
リッチーブラックモアなら知ってる

402:kuma
11/10/14 16:26:03.13
pythonを勉強始めようと思っています

質問があります
pythonmには、perlのcpanのようなものは、ありますか?

403:デフォルトの名無しさん
11/10/14 16:36:19.51
>>402
PyPIってのがPerlのCPANに相当します。

URLリンク(pypi.python.org)
URLリンク(ja.wikipedia.org)

404:デフォルトの名無しさん
11/10/14 17:11:03.63
ぱいぱい

405:kuma
11/10/14 17:13:59.77
>>403
親切な対応をありがとうございます。
勉強して、使えるようになりたいです。
ありがとうございました。



406:デフォルトの名無しさん
11/10/14 18:19:26.36
winXP、ptyhon2.7.1です。
「リストLの要素の、全ての組み合わせを列挙し、
要素の第2項目の合計値を求める」
という趣旨で書いたのが下記です。
forの中身を、reduceやsumやリスト内包表記を
使ってスマートなコードしたいのですが、
書き方が全く解かりません(思いつきません)。
どなたか、書き換え例をお願いします。
(表示のためインデントは全角空白です)

# -*- coding:cp932 -*-
import sys, itertools
L = [['A',12050],['B',28600],['C',14530],['D',12810],['E',11020],
['F',10050],['G',18600],['H',24530],['I',21510],['J',10080]]
num = 0
for i in xrange(1,len(L)+1):
 for j in itertools.combinations(L, i):
  j_total = 0
  combi = []
  for k in j:
   combi.append(k[0])
   j_total += k[1]
  num += 1
  print num, '-'.join(combi), ':', j_total
sys.exit(0)


407:デフォルトの名無しさん
11/10/14 18:34:32.27
for num, lis in enumerate(j for i in xrange(1, len(L)+1) for j in itertools.combinations(L, i)):
print num, '-'.join(item[0] for item in lis), ':', sum(item[1] for item in lis)

408:デフォルトの名無しさん
11/10/14 19:04:01.27
もう分かったと思いますがなんでも使えばいいってもんじゃありません

409:デフォルトの名無しさん
11/10/14 19:51:47.89
L = [['A',12050],['B',28600],['C',14530],['D',12810],['E',11020],
  ['F',10050],['G',18600],['H',24530],['I',21510],['J',10080]]
for num in xrange(1,1<<len(L)):
 x = lambda k: (b[k] for a,b in enumerate(L) if num & 1<<a)
 print num, '-'.join(x(0)), ':', sum(x(1))

ビット演算で組み合わせを生成してみたり。

410:デフォルトの名無しさん
11/10/14 20:03:36.36
L = [['A',12050],['B',28600],['C',14530],['D',12810],['E',11020],
  ['F',10050],['G',18600],['H',24530],['I',21510],['J',10080]]
for num in xrange(1,1<<len(L)):
 x,y = zip(*(b for a,b in enumerate(L) if i & 1<<a))
 print i, '-'.join(x), ':', sum(y)

zip使ったほうが綺麗か?


411:デフォルトの名無しさん
11/10/14 20:05:33.84
ビット演算使ったら中二病コードになっちまう。

412:デフォルトの名無しさん
11/10/14 20:13:10.43
from __future__ import print_function
L = [['A',12050],['B',28600],['C',14530],['D',12810],['E',11020],
  ['F',10050],['G',18600],['H',24530],['I',21510],['J',10080]]
for num in xrange(1,1<<len(L)):
 x,y = zip(*(b for a,b in enumerate(L) if i & 1<<a))
 print(i, *reduce(lambda x,y: (x[0]+'-'+y[0], x[1]+y[1]), (b for a,b in enumerate(L) if i & 1<<a)))

無理やりreduce使ってみた。
Python3形式のprintじゃないと最後の書き方ができないんで、__future__使ってしまったが。



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch